Вопрос по использованию Sluggable Behavior

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
Йож
Сообщения: 573
Зарегистрирован: 2015.08.26, 03:05

Вопрос по использованию Sluggable Behavior

Сообщение Йож »

Добрый день!

Использую стандартный use yii\behaviors\SluggableBehavior;
Версия Yii 2.0.38.

Код: Выделить всё

[
                'class' => SluggableBehavior::class,
                'attribute' => 'title',
                'immutable' => true,
            ],
При фильтре по гриду по колонке title поведение переводит то, что введено - в slug и передает в поиск.

Код: Выделить всё

class BrandSearch extends Brand
{
    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['id', 'status'], 'integer'],
            [['slug', 'title'], 'safe'],
        ];
    }

    /**
     * @inheritdoc
     */
    public function scenarios()
    {
        // bypass scenarios() implementation in the parent class
        return Model::scenarios();
    }

    /**
     * Creates data provider instance with search query applied
     *
     * @return ActiveDataProvider
     */
    public function search($params)
    {
        $query = Brand::find();

        $dataProvider = new ActiveDataProvider([
            'query' => $query,
        ]);

        if (!($this->load($params) && $this->validate())) {
            return $dataProvider;
        }

        $query->andFilterWhere([
            'id' => $this->id,
            'status' => $this->status,
        ]);

        $query->andFilterWhere(['like', 'slug', $this->slug])
            ->andFilterWhere(['like', 'title', $this->title]);

        return $dataProvider;
    }
}
Мне это не нужно, поиск должен быть только по одному столбцу.
До последнего обновления компонентов такого не было. Это бага или я что-то где-то упустил?

Спасибо.

rak
Сообщения: 2041
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Вопрос по использованию Sluggable Behavior

Сообщение rak »

Код: Выделить всё

public function behaviors()
{
    return [
    	'sluggable' => [
                'class' => SluggableBehavior::class,
                'attribute' => 'title',
                'immutable' => true,
            ],
    ];

Код: Выделить всё

public function search($params)
{
    $this->detachBehavior('sluggable');
    //...
}

Ответить