Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yii2字段过滤器未显示在GridView上_Gridview_Filter_Yii2_Field - Fatal编程技术网

Yii2字段过滤器未显示在GridView上

Yii2字段过滤器未显示在GridView上,gridview,filter,yii2,field,Gridview,Filter,Yii2,Field,我无法按任何字段进行GridView筛选,网格显示ok,但我的筛选部分显示为空白,这是GridView声明: GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ [ 'attribute'=>'n

我无法按任何字段进行GridView筛选,网格显示ok,但我的筛选部分显示为空白,这是GridView声明:

GridView::widget([
            'dataProvider' => $dataProvider,
            'filterModel' => $searchModel,
            'columns' => [
                [
                'attribute'=>'nombre_sucursal',
                'value'=>'sucursal.nombre_sucursal',
                'filter' => ArrayHelper::map(Sucursal::find()->asArray()->all(), 'id_sucursal', 'nombre_sucursal'),
                'label'=>'Sucursal'
                ],
                [
                'attribute'=>'nombre_materia',
                'value'=>'materia.nombre_materia',
                'label'=>'Materia'
                ],
                'fecha:datetime',
            ],
            'export'=>false
        ]);?>
这是我的searchModel和dataProvider的声明:

$searchModel = new CalendarioSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
我的搜索模式是:

class CalendarioSearch extends Model
{
/* your calculated attribute */
public $nombre_sucursal;
public $nombre_materia;

/* setup rules */
public function rules() {
   return [
    /* your other rules */
    [['nombre_sucursal'], 'safe'],
    [['nombre_materia'], 'safe']
   ];
}


public function search($params) {
    $query = Calendario::find();
    $dataProvider = new ActiveDataProvider([
        'query' => $query,
        'pagination' => [
            'pageSize' => 20,
        ],
        'sort' => [
            'defaultOrder' => ['fecha'=>SORT_DESC],
            'attributes' => [
                'nombre_sucursal' => [
                    'asc' => [
                        'id_sucursal' => SORT_ASC,
                        'fecha' => SORT_DESC
                    ],
                    'desc' => [
                        'id_sucursal' => SORT_DESC,
                        'fecha' => SORT_DESC
                    ],
                ],
                'nombre_materia' => [
                    'asc' => [
                        'id_materia' => SORT_ASC,
                        'fecha' => SORT_DESC
                    ],
                    'desc' => [
                        'id_materia' => SORT_DESC,
                        'fecha' => SORT_DESC
                    ],
                ],
                'fecha' => [
                    'asc' => [
                        'fecha' => SORT_ASC,
                    ],
                    'desc' => [
                        'fecha' => SORT_DESC,
                    ],
                ],

            ],
        ]
    ]);

    if (!($this->load($params) && $this->validate())) {
        $query->joinWith(['sucursal']);
        $query->joinWith(['materia']);
        return $dataProvider;
    }

    $query->joinWith(['sucursal' => function ($q) {
        $q->where('c_sucursal.id_sucursal LIKE "%' . $this->nombre_sucursal . '%"');
    }]);

    $query->joinWith(['materia' => function ($q) {
        $q->where('c_materia.id_materia LIKE "%' . $this->nombre_materia . '%"');
    }]);

    return $dataProvider;
    }
}

我遵循的文档是。

确保在CalendarioSearch中声明了正确的rulese函数,例如:

public function rules()
{
    return [
        [['id_materia' ], 'integer'],
        [['nombre_sucursal', 'materia' ], 'safe'],
    ];
}
并确保在filter和i类中使用相同的名称


在您的过滤器中,您使用的是nombre_sucursal,但在您的类中,您使用的是$nombreSucursal

您是否在搜索模型中设置了
规则
?addCondition从何而来?这不是一个常规的模型类,对吧?我只是用完整的搜索模型uǝp更新了这个问题。Robsch,你对我从模型扩展而来的常规模型是什么意思?这样行吗?或者我必须从特定的searchmodel类进行扩展?我只是用搜索模型中的规则更新问题。我更新了答案,建议使用相同的专有名称。。在代码的相关部分。谢谢你为我做了这项工作,有了这项工作,我可以看到网格中的过滤器,然后我必须在我的代码中做一些其他更正,使其工作。我用其他更正更新了问题。再次感谢。