GridView :: Виджет поиска данных из другой таблицы - PullRequest
0 голосов
/ 11 декабря 2019

У меня есть виджет GridView ::, который заполняется этим методом:

StabilimentiController.php

public static function getGridColumns($isMine = true, $readonly = false) {
 $c = [
            'denominazione',
            [
                'attribute'      => 'provincia',
                'value'          => 'indirizzo.provincia',
                'headerOptions'  => ['class' => 'table-col-provincia'],
                'contentOptions' => ['class' => 'table-col-provincia'],
            ],
            [
                'attribute'      => 'created_by',
                'value'          => 'azienda.ragioneSociale',
                'headerOptions'  => ['class' => 'table-col-createdBy'],
                'contentOptions' => ['class' => 'table-col-createdBy'],
            ]
    ];

return $c;
}

У меня есть некоторые проблемы при создании поля ввода для поиска для поля созданного_бай.

Created_by в моей модели определяется как целое число, это код, позволяющий однозначно идентифицировать компанию (азиенда).

В моей модели Stabilimenti.php у меня есть этот метод, чтобы перехватить его, а затем с помощью.notation внутри метода getGridColumns Я могу получить доступ к полю ragioneSociale, которое мне интересно.

/**
     * @return \yii\db\ActiveQuery
*/
    public function getAzienda() {
        return $this->hasOne(Azienda::className(), ['id' => 'azienda_id'])->inverseOf('stabilimenti');
    }

Выход - это то, что я хочу, единственная проблема заключается в том, что поле поиска в моем GridViewпринять в качестве входных данных код int, а не строку ragioneSociale, и это не очень удобно для пользователя.

В моем StabilimentiSearch.php

public function rules(){
    return [
           [['id', 'azienda_id', 'created_by', 'updated_by'], 'integer'],
           [['denominazione', 'indirizzo', 'citta', 'localita', 'provincia', 'cap', 'produttore', 'utente', 'azienda' ], 'safe'],
             array('ragioneSociale', 'safe', 'on'=>'search'),
        ];

я поставил ragioneSociale как безопасный и сопция поиска, но у меня есть некоторые трудности в правильном ее привязке к inputBox.

...