Yii TbGridView设置过滤器下拉html属性

时间:2014-06-30 23:56:35

标签: php html yii

我无法弄清楚如何设置过滤器下拉列表的id属性。

以下是定义小部件的视图代码。

$this->widget('bootstrap.widgets.TbGridView',array(
'id'=>'view-grid',
'enableHistory'=>true,
'dataProvider'=>$model->search(),
'summaryText'=>"",
'filter'=>$model,
'columns'=>array(
    array('name'=>'v_id','htmlOptions'=>array('style'=>'width: 60px')),
    array('name'=>'v_parent_view','htmlOptions'=>array('style'=>'width: 20%'),'value'=>'$data->vParent->v_name'),
    array('name'=>'v_name','type'=>'raw','value'=>function($data,$row) {
        if(isset($data->vLatestVersion[0]->vv_id) && $data->vLatestVersion[0]->vv_id) {
            return CHtml::link($data->v_name,array("viewVersion/update","id"=>$data->vLatestVersion[0]->vv_id));
        } else {
            return CHtml::link($data->v_name,array("viewVersion/create","vid"=>$data->v_id));
        }
    }),
    array('name'=>'v_date_modified', 'type'=>'raw', 'htmlOptions'=>array('style'=>'width: 110px'), 'value'=>function($data, $row) {
        return $data->modified_since . '<br/><span class="timeago">'.$data->vUserModified->username.'</span>';
    }),
    array(
        'name'=>'v_status',
        'value'=>'$data->getStatusName()',
        'filter'=>Yii::app()->params['globalDmpLookups']['generalStatus'],
        'filterHtmlOptions'=>array('id'=>'sel_status'),
        'htmlOptions'=>array('style'=>'width: 60px'),
    )
),

));

具有'filterHtmlOptions'的末尾附近的代码行是我尝试过的,但它不起作用。任何帮助将不胜感激。

我的下拉列表的渲染html应如下所示:

<select id="sel_status" name="View[v_status]">...</select>

但遗憾的是它看起来像这样:

<select name="View[v_status]">...</select>

2 个答案:

答案 0 :(得分:0)

filterHtmlOptions是表行元素的HTML选项,而不是输入。

Yii :: app() - &gt; params [&#39; globalDmpLookups&#39;] [&#39; generalStatus&#39;]的价值是多少? 如果要设置过滤器下拉列表的id属性,请在下拉列表中设置HTML属性。

例如:

// ..
'columns'=>array(
    array(
        'name' => 'majorId',
        'filter' => CHtml::activeDropDownList($model, 'majorId', CHtml::listData(
            Major::model()->findAll(), "id", "name"), 
            array(
                'empty' => '=== Pilih Jurusan ===',
                'id' => 'YOUR_ID'
            )
        ),
    ),
),
// ..

答案 1 :(得分:0)

我发现我试图在列表过滤器中错误地使用下拉列表来显示status = Active / Disabled。这样做Yii方式就像设置这样的模型一样简单......

public function search()
{
    // Warning: Please modify the following code to remove attributes that
    // should not be searched.

    $criteria=new CDbCriteria;
    $criteria->with = array('ggUserModified'); // specify relationship
    $criteria->compare('gg_id',$this->gg_id);
    $criteria->compare('gg_class',$this->gg_class,true);
    $criteria->compare('gg_name',$this->gg_name,true);
    $criteria->compare('gg_title',$this->gg_title,true);
    $criteria->compare('gg_description',$this->gg_description,true);
    $criteria->compare('gg_date_modified',$this->gg_date_modified,true);
    $criteria->compare('gg_status',$this->gg_status);
    $criteria->compare('User.username',$this->gg_user_modified_rel,true); // use table alias name and specify relationship field property

    return new CActiveDataProvider($this, array(
        'criteria'=>$criteria,
        'sort'=>array(
            'attributes'=>array(
                'gg_user_modified_rel' => array( // specify relationship field property
                    'asc'=>'User.username', // specify table alias name
                    'desc'=>'User.username DESC', // specify table alias name
                ),
                '*',
            ),
        ),
    ));
}

...并设置这样的视图...

<?php $this->widget('bootstrap.widgets.TbGridView',array(
'id'=>'gallery-group-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
    'gg_id',
    'gg_name',
    array(
        'name'=>'gg_user_modified_rel', // specify relationship field property
        'value'=>'$data->ggUserModified->username' // specify relationship name
    ),
    'gg_date_modified',
    array(
        'name'=>'gg_status',
        'value'=>'$data->getStatusName()',
        'filter'=>Yii::app()->params['globalDmpLookups']['generalStatus'],
        'htmlOptions'=>array('style'=>'width: 120px'),
    ),
    array('header'=>'Item Count','value'=>'$data->ggChildCount'),
    array(
        'class'=>'bootstrap.widgets.TbButtonColumn',
    ),
),)); ?>