Yii过滤CHtml :: dropDownList组结果

时间:2018-03-06 06:55:46

标签: yii

我使用CHtml :: dropDownList作为Yii中一列的过滤器

array(
    'name' => 'type',
    'value' => '$data->getDay()', 
    'filter'=>CHtml::dropDownList(
        'work[day]',
        $work->day,
        $this->t(Work::$days),
        array('prompt'=>$this->t('All'),'class'=>'form-control'))
);

选项列表如下

Work::$days = array('weekday' => 'Weekday', 'weekend' => 'Weekend');

如何使用这两个选项来过滤

array('Monday', 'Tuesday' ...);

1 个答案:

答案 0 :(得分:0)

你只需要研究两件事

  1. 您的模型名称为Work而不是work,yii以相同的格式生成与表单或过滤器输入相关的字段,即Modelname[fieldname]

    一个好的做法是,如果您手动提供字段名称并且字段与活动记录相关,则应使用Model::class打印类名而不是手动输入。
    然后将空值作为选定值传递,以便默认显示所有记录,并且下拉列表中选择了占位符All

  2. 您是否将字段type中的值保存为 Monday monday 。< / p>

    如果是星期一,则必须将$days数组更改为Work::$days=array('Monday'=>'Monday','Tuesday'=>'Tuesday'),否则保持不变。

  3. 因此,您的列定义将如下所示

    array(
        'name' => 'type',
        'value' => '$data->getDay()', 
        'filter'=>CHtml::dropDownList(
            Work::class.'[name]',
            '',
            $this->t(Work::$days),
            array('prompt'=>$this->t('All'),'class'=>'form-control'))
    );
    

    希望这开始为你效劳。