【问题标题】:Yii: How to get list of checkboxes?Yii:如何获取复选框列表?
【发布时间】:2013-08-03 17:34:11
【问题描述】:

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

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

我该怎么做?

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

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

我从Yii-Bootstrap Documentation 得到的。

【问题讨论】:

    标签: php web-applications twitter-bootstrap yii


    【解决方案1】:

    试试这个简单的

    为了使预检查工作,只需将数组作为第二个参数传递 如下图

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

    【讨论】:

    • 谢谢@Ninad,我可以使用$form-&gt;... 做类似的事情吗?我正在尝试使用你看到的 Yii Twitter Bootstrap 扩展。
    • 实际上,Ninrod,我无法让预先选择的值起作用。 :( 如果我将第二个参数设置为要检查的值数组,则会收到错误消息:strpos() expects parameter 1 to be string, array given。知道吗?
    【解决方案2】:

    您应该从 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>
    

    【讨论】:

    • 谢谢@cavaliercyber 但checkboxes 会在这里吗?这是$model 中的变量吗?
    【解决方案3】:

    检查这个例子:

    图书模型:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多