【问题标题】:cakephp checkbox not remaining checked after submit提交后 cakephp 复选框未保持选中状态
【发布时间】:2013-12-29 13:05:47
【问题描述】:

我对 cakephp 表单(复选框)属性有疑问。当我使用以下代码生成一个带有多个输入复选框的页面时,并且在我点击提交按钮时检查了一些复选框后,我得到了一个刷新页面,这些复选框仍然处于选中状态。这很好。

$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');

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

【问题讨论】:

  • 为什么你使用带点的字段名Name.

标签: php cakephp checkbox


【解决方案1】:

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

如果你出于某种特殊原因需要第二种方法,我建议你还是使用第一种方法,然后在用 javascript 渲染后改变你需要的。

【讨论】:

    【解决方案2】:

    您在第一种方法中的复选框在您的第一种方法中保持选中状态。奇怪的可能是由于浏览器缓存造成的,但是在刷新页面后,您必须通过在两种方法中添加“checked”=>“checked”属性来检查它们。

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

    希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-30
      • 2019-09-12
      • 1970-01-01
      • 1970-01-01
      • 2016-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多