如何在cakephp中获取复选框提交的数据?

时间:2015-07-06 09:06:04

标签: cakephp cakephp-2.0

我有一个表单来获取用户对表单最感兴趣的书籍,其中包含每个类别的选项卡,每个选项卡包含多个复选框,以便用户可以查看他喜欢的书籍的名称。这里的问题我无法获取包含图书名称的复选框的值。

查看

<? echo $this->Form->create('Book', array('id'=>'booksform', 
                                          'url'=>array('action' => 'your_books')));  ?>

<div id="tabs-1">
    <? echo $this->Form-> input('books',array('type' => 'select',
                                              'multiple' => 'checkbox',
                                              'name' => 'books',
                                              'options' => $biographies,
                                              'label'=>false));?>
</div>
<div id="tabs-2">
    <? echo $this->Form-> input('books',array('type' => 'select',
                                              'multiple' => 'checkbox',
                                              'name' => 'books',
                                              'options' => $history,
                                              'label'=>false));?> 
</div>
<? echo $this->Form->end(); ?>

<?  echo $this->Form->submit(__('Submit'),array('class'=>'btn btn-primary','div'=>false)); ?>

控制器 我试过这个

if ($this->request->is('post')) {
    $books = $this->request->data( 'books');
}

和此:

$books = $this->request->data['Book']['books'];

2 个答案:

答案 0 :(得分:0)

您的表单应如下所示:

<? echo $this->Form->create('Book', array('id'=>'booksform', 
                                          'url'=>array('action' => 'your_books')));  ?>
<div id="tabs-1">
  <? 
  $biographies = array('1'=>'a','2'=>'b');
  echo $this->Form-> input('books',array('type' => 'select',
                                              'multiple' => 'checkbox',
                                              'name' => 'books',
                                              'options' => $biographies,
                                              'label'=>false));?>
</div>
<div id="tabs-2">
  <? $history = array('3'=>'c','4'=>'d'); 
  echo $this->Form-> input('books',array('type' => 'select',
                                              'multiple' => 'checkbox',
                                              'name' => 'books',
                                              'options' => $history,
                                              'label'=>false));?> 
</div>
<? 
echo $this->Form->submit(__('Submit'),array('class'=>'btn btn-primary','div'=>false));
echo $this->Form->end(); ?>

这里传递了多个&#39;字段名中的参数,因此其值存储为数组格式。

提交后的

Sp,通过下面的代码返回所有逗号分隔的复选框ID

 <?php echo implode($this->request->data['books'],','); ?>

答案 1 :(得分:0)

是否有必要拥有这两个div和?

因为我认为你的HTML应该足够灵活,以容纳单个div下的所有chekbox。如果您尝试这样做,我向您保证您的问题将得到解决。