2

我想知道当我尝试通过 GET 方法将其发送到我的其他页面时是否可以格式化复选框的名称。

实际上,我有多个复选框,它们会生成如下内容:

<div class="checkbox"><input type="checkbox" name="test[]" value="1" id="ResearchTest1" /><label for="ResearchTest1">First Test</label></div>
<div class="checkbox"><input type="checkbox" name="test[]" value="2" id="ResearchTest2" /><label for="ResearchTest2">Second Test</label></div>
<div class="checkbox"><input type="checkbox" name="test[]" value="3" id="ResearchTest3" /><label for="ResearchTest3">Third Test</label></div>

当我发送表单时,我的 URL 如下所示:

research%3D%26test%3D%26test%5B%5D%3D1%26test%5B%5D%3D2%26test%5B%5D%3D3

这是:

research=&test=&test[]=1&test[]=2&test[]=3

我想要的是:

research=&test1=1&test2=2&test3=3

或者

research=&test=1&test=2&test=3

或者,更好:

 research=&test=1,2,3

有任何想法吗 ?

4

3 回答 3

0

You can define the name of the input using the FormHelper:

echo $this->Form->checkbox('yourInputId', array('name' => 'yourInputName'));
于 2012-12-17T15:37:49.253 回答
0

问题是我使用了多个复选框:

$this->Form->input('tests', array('type' => 'select', 'multiple' => 'checkbox', 'options' => $options));

所以我不能单独重命名每个复选框。

也许我不应该为此使用 cakephp,而是尝试直接在 html 中编写自己的复选框?

于 2012-12-17T16:41:29.077 回答
0

这就是复选框的工作方式,如果需要 test1=1&test2=2&test3=3,您应该单独命名每个复选框。

echo $this->Form->checkbox('foo', array('name' => 'test1'));
echo $this->Form->checkbox('foo', array('name' => 'test2'));
echo $this->Form->checkbox('foo', array('name' => 'test3'));

这将使您的处理更加困难。

你可以research=&test=1,2,3用 JS做join()。我不知道你为什么要让自己变得困难。您可以轻松地在控制器中使用 GET 获得相同的格式implode(',', $theData)

我建议您使用它standards来提交您的表单并稍后处理数据。

于 2012-12-17T15:40:20.397 回答