function _remap($method,$args)
{
if (method_exists($this, $method)) {
/**
* Call the method
*/
$this->$method($args);
}else {
/**
* Otherwise pass $method to index() as an argument
*/
$this->index($method,$args);
}
}
在Yii2中,默认情况下,我们为Index操作提供了searchModel和dataProvider。但是,要自定义返回的数据以使其符合特定条件,我会遇到挑战。这就是我所做的:
$searchModel = new CustomersSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
这很好但问题是它干扰了GridView的filterModel,这样从提供的搜索过滤器中搜索任何东西都不能对GridView返回的数据起作用。我是否可以在不影响GridView中的filterModel的情况下向searchModel添加条件?
答案 0 :(得分:6)
如果我理解正确,您希望允许用户使用GridView过滤器,但要限制他们获得的匹配customers.status = 10
条件的结果。是吗?
如果您不想将查询条件重置为上面提供的但只是为了追加它,请使用andWhere
,如:
$dataProvider->query->andWhere('customers.status = 10');
答案 1 :(得分:0)
看到where
和andWhere
之间的区别。
如果您使用where
,则andWhere
不起作用。如果您想过滤多个时间,请使用andWhere