在cakephp中显示选中的复选框

时间:2016-03-08 23:19:32

标签: cakephp

我想从列表中获取所选复选框。 我收到错误/警告

  

参数1不是一个字符串(在for循环中)。

复选框中有一个ID字段,因此当选中一个复选框时,我只想获取名为ID的该行checkid

我似乎无法一次遍历列表,也检查已检查的字段。

我尝试了各种各样的组合,但我并不确切地知道正确的方法。

我在这里找不到 http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html

控制器

   if (isset($this->request->data['addrecord'])) {   

               foreach ($this->request->data as $key => $item): 



           if (isset($item['checkid'])){
              if ($item['checkid']>0){ 

               // $lessonId=($item['id']);
                debug($item['checkid']); //no output

              }
            }


          endforeach;



view//

    echo '<td>'.$this->Form->checkbox('User.'.$key.'.checkid', 
                       array('value'=>$student['Student']['id'], 'checked'=>0)).'</td>';

输出我无法获得单独的checkid

  array(
    'addrecord' => 'Add Email(s)',
    'User' => array(
        'firstname' => 'a',
        'lastname' => '',
        'searchemail' => '',
        'id' => '372',
        (int) 0 => array(
            'checkid' => '216'
        ),
        (int) 1 => array(
            'checkid' => '311'
        ),
        (int) 2 => array(
            'checkid' => '0'
        ),
        (int) 3 => array(
            'checkid' => '0'

1 个答案:

答案 0 :(得分:1)

您可以使用Hash提取值:

$data = array(
    'addrecord' => 'Add Email(s)',
    'User' => array(
        'firstname' => 'a',
        'lastname' => '',
        'searchemail' => '',
        'id' => '372',
        (int) 0 => array(
            'checkid' => '216'
        ),
        (int) 1 => array(
            'checkid' => '311'
        ),
        (int) 2 => array(
            'checkid' => '0'
        ),
        (int) 3 => array(
            'checkid' => '0'
        )
    )
);

$checked_ids = Hash::extract($data['User'], '{n}.checkid');

$checked_ids数组将包含

array(
    (int) 0 => '216',
    (int) 1 => '311',
    (int) 2 => '0',
    (int) 3 => '0'
)