Cakephp如何将数组从视图传递到控制器

时间:2016-10-15 00:04:10

标签: cakephp

使用Cakephp 2我试图从列表中选择一个或多个单击复选框的记录 名为my_id []:

<input type="checkbox" name="my_id[]" value="<?php echo $Myobj['My']['id']; ?>

我有一个指向控制器processBatch方法的链接,但不知道如何使用复选框将所选数据的数组传递到视图文件中。

<?= $this->Html->link('Batch process','proccessBatch')?>

我在尝试:

public function proccessBatch( ) //array of $ids  
{        
    pr($this->request);

但没有看到$ this-request-&gt;数据。如何获取复选框选中的值?

1 个答案:

答案 0 :(得分:1)

我在下面为您创建了一个示例。

  

这是我的观点

    <?php
    //sample list of items with 'id'=>'name
    $arrayList = [
        0=>'item 1',
        1=>'Item 2',
        2=>'Item 3'
    ];
    //create the form
    echo $this->Form->create('listofitems',array('novalidate' => true));
    //generate the checkboxes by looping through the items(this is just one way of doing it)
        for($i=0;$i<count($arrayList);$i++){
            //concatenate the value of the id ($i in my case) with the name
            // of the field to uniquely identify it.
            echo $this->Form->checkbox("my_id".$i);
        }
    echo $this->Form->end('save');//end form and save button
    ?>
  

这是我的控制器及其动作

<?php
App::uses('AppController', 'Controller');
class SampleController extends AppController {

    public function arrays(){
        pr($this->request->data); //just pr the posted data
    }

}
?>
  

控制器中pr行的结果

Array
(
    [listofitems] => Array
        (
            [my_id0] => 1
            [my_id1] => 0
            [my_id2] => 1
        )

)

希望这可以帮助您解决问题。请注意,只有已检查的商品的值为1 ,而未选中的商品的值为0