提交后,cakephp复选框未保留

时间:2013-12-28 18:51:13

标签: php cakephp checkbox

我对cakephp Form(复选框)属性有疑问。当我使用以下代码生成一个包含多个输入复选框的页面时,在我点击提交按钮后检查一些复选框后,我得到一个刷新页面,其中这些复选框保持选中状态。那很好。

$options = array("one"=>"one", "two"=>"two");
echo $this->Form->create('Pres');
echo $this->Form->input('Name',array(
    'label' => false,
    'type' => 'select',
    'multiple' => 'checkbox',
    'options' => $options,
));
echo $this->Form->end("Submit");

但是当我使用以下代码生成页面时,提交后刷新的页面不会保留选中的复选框

echo $this->Form->create('Pres');
echo $this->Form->input('Name.',array('type'=>'checkbox','hiddenField'=>false,'label'=>'one','value'=>'one'));
echo $this->Form->input('Name.',array('type'=>'checkbox','hiddenField'=>false,'label'=>'two','value'=>'two'));
echo $this->Form->end('Submit');

我想出于某种特殊原因使用第二种方法,但在提交之后,我希望保持刷新的页面,并保持选中这些复选框。非常感谢您的意见。

2 个答案:

答案 0 :(得分:0)

我不知道CakePHP是如何工作的,但它可能需要第一种方法将检查状态与$options数组的每个复选框同时关联。所以在第二种方法CakePHP得到多次输入(复选框),并且不知道他的$options列表在哪里检查正确的。

如果出于特殊原因需要第二种方法,我建议您仍然使用第一种方法,然后使用javascript更改渲染后的所需内容。

答案 1 :(得分:0)

第一种方法中的复选框仍然在第一种方法中被检查..目标可能是由于浏览器缓存,但在刷新页面后,您必须通过添加“checked”=>来检查它们。两种方法都“检查”了attritbute。

Example:
echo $this->Form->input('Name.',
                        array('type'=>'checkbox',
                              'hiddenField'=>false,
                              'label'=>'two',
                              'value'=>'two',
                              **'checked' => 'checked'**));

希望这会对你有帮助!