Yii:如何获取复选框列表?

时间:2013-08-03 17:34:12

标签: php web-applications twitter-bootstrap yii

我有一个名为Table的表,它有idname作为属性。

对于表中的每个条目,我想生成一个复选框。

我该怎么做?

我正在使用Yii-Boostrap插件,我希望我需要使用这样的东西:

foreach(...)
    echo $form->checkBoxRow($model, 'name');

我从Yii-Bootstrap Documentation得到的。

3 个答案:

答案 0 :(得分:4)

试试这个简单的

在此预先检查工作只是将数组作为第二个参数传递 如下图所示

<?$select=array('2','3');?>

<?php echo CHtml::checkBoxList(
        'TableValues',
        '$select',//you can pass the array here which you want to be pre checked 
        CHtml::listData(Table::model()->findAll(),'id','name'),
        array('checkAll'=>'Select all tasks', 'checkAllLast'=>true)
    ); ?>

您可以使用

在控制器中获取所选的复选框值
 print_r($_POST['TableValues']);

<强>已更新

为此,预先检查工作你必须将数组分配给模型属性,如下所示

<?php $model->modelAttributename=array('3','5')//respective checked values as of yours 

<?php echo $form->checkBoxList(
            $model,
            'modelAttributename',
            CHtml::listData(Table::model()->findAll(),'id','name'),
            array('checkAll'=>'Select all tasks', 'checkAllLast'=>true)
        ); ?>

答案 1 :(得分:0)

你应该看到你的结果数组形式sql查询,看看如何从结果数组访问你想要的任何字符串,然后你创建包含名称列表的字符串数组。 例如你的结果查询是$ result [“name”] = array(“a”,“b”,“c”);

<?php /** @var BootActiveForm $form */
    $form = $this->beginWidget('bootstrap.widgets.TbActiveForm', array(
    'id'=>'horizontalForm',
    'type'=>'horizontal',
    ));
?>    
<fieldset>

<legend>Legend</legend>

<?php    
    $result["name"] = array("a","b","c");     
    echo $form->checkBoxListRow($model, 'checkboxes', $result["name"]);
?>

</fieldset>

答案 2 :(得分:0)

检查此示例:

书籍型号:

'authors' => array(self::MANY_MANY, 'Author', 'authorbook(book_id,author_id)'),

作者模型:

'books' => array(self::MANY_MANY, 'Book', 'authorbook(author_id, book_id)'),

表单中的复选框列表:

$books = CHtml::listData(Book::model()->findAll(), 'id', 'name');
$selected_keys = array_keys(CHtml::listData( $model->books, 'id' , 'id'));
echo CHtml::checkBoxList('Author[books][]', $selected_keys, $books);