我对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');
我想出于某种特殊原因使用第二种方法,但在提交之后,我希望保持刷新的页面,并保持选中这些复选框。非常感谢您的意见。
答案 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'**));
希望这会对你有帮助!