12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- <?php
- namespace common\modules\rbac\models\searchs;
- use common\modules\rbac\models\Menu as MenuModel;
- use yii\base\Model;
- use yii\data\ActiveDataProvider;
- /**
- * Menu represents the model behind the search form about [[\rbac\models\Menu]].
- *
- * @author Misbahul D Munir <misbahuldmunir@gmail.com>
- *
- * @since 1.0
- */
- class Menu extends MenuModel
- {
- /**
- * {@inheritdoc}
- */
- public function rules()
- {
- return [
- [['id', 'parent', 'order'], 'integer'],
- [['name', 'route', 'parent_name'], 'safe'],
- ];
- }
- /**
- * {@inheritdoc}
- */
- public function scenarios()
- {
- // bypass scenarios() implementation in the parent class
- return Model::scenarios();
- }
- /**
- * Searching menu.
- *
- * @param array $params
- *
- * @return \yii\data\ActiveDataProvider
- */
- public function search($params)
- {
- $query = MenuModel::find()
- ->from(MenuModel::tableName().' t')
- ->joinWith(['menuParent' => function ($q) {
- $q->from(MenuModel::tableName().' parent');
- }]);
- $dataProvider = new ActiveDataProvider([
- 'query' => $query,
- ]);
- $sort = $dataProvider->getSort();
- $sort->attributes['menuParent.name'] = [
- 'asc' => ['parent.name' => SORT_ASC],
- 'desc' => ['parent.name' => SORT_DESC],
- 'label' => 'parent',
- ];
- $sort->attributes['order'] = [
- 'asc' => ['parent.order' => SORT_ASC, 't.order' => SORT_ASC],
- 'desc' => ['parent.order' => SORT_DESC, 't.order' => SORT_DESC],
- 'label' => 'order',
- ];
- $sort->defaultOrder = ['menuParent.name' => SORT_ASC];
- if (!($this->load($params) && $this->validate())) {
- return $dataProvider;
- }
- $query->andFilterWhere([
- 't.id' => $this->id,
- 't.parent' => $this->parent,
- ]);
- $query->andFilterWhere(['like', 'lower(t.name)', strtolower($this->name)])
- ->andFilterWhere(['like', 't.route', $this->route])
- ->andFilterWhere(['like', 'lower(parent.name)', strtolower($this->parent_name)]);
- return $dataProvider;
- }
- }
|