Получение доступа к связи из виджета.

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
AIR
Сообщения: 28
Зарегистрирован: 2014.10.31, 17:35

Получение доступа к связи из виджета.

Сообщение AIR »

Добрый день, уважаемые программисты.
Интересует такой вопрос. Как получить доступ к связи из виджета GridView к связи с другой моделью?
В Yii 1.1 это делается через переменную $data. Как это сделать на Yii 2.0?
Если не трудно, прикрепите маленький объясняющий кусочек кода, буду очень благодарен :)
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Получение доступа к связи из виджета.

Сообщение zelenin »

если вы про то, как назвать колонку, то это 'relation.relationAttribute'
AIR
Сообщения: 28
Зарегистрирован: 2014.10.31, 17:35

Re: Получение доступа к связи из виджета.

Сообщение AIR »

zelenin писал(а):если вы про то, как назвать колонку, то это 'relation.relationAttribute'
Есть функция связи в моделе связующая модели:

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

    
    public function getCity()
    {
        return $this->hasOne(City::className(), ['id' => 'city_id']);
    }
И есть виджет во вьюхе :

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

<?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
            'id',
            'name',
            'mail',
            'city_id',
            ['class' => 'yii\grid\ActionColumn'],
        ],
    ]); ?>
Как в свойстве city_id обратиться к связи чтобы вытащить город из связанной таблицы по значению?
Если не трудно, кусочком кода, для наглядности :)
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Получение доступа к связи из виджета.

Сообщение zelenin »

AIR писал(а):
zelenin писал(а):если вы про то, как назвать колонку, то это 'relation.relationAttribute'
Есть функция связи в моделе связующая модели:

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

    
    public function getCity()
    {
        return $this->hasOne(City::className(), ['id' => 'city_id']);
    }
 
И есть виджет во вьюхе :

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

<?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
            'id',
            'name',
            'mail',
            'city_id',
            ['class' => 'yii\grid\ActionColumn'],
        ],
    ]); ?>
Как в свойстве city_id обратиться к связи чтобы вытащить город из связанной таблицы по значению?
Если не трудно, кусочком кода, для наглядности :)
я же написал: 'city.name'
Аватара пользователя
futbolim
Сообщения: 2051
Зарегистрирован: 2012.07.08, 19:28

Re: Получение доступа к связи из виджета.

Сообщение futbolim »

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

[
'attribute' => 'city_id',
'value' => function ($model, $key, $index, $column) { return $model->city->name; }
]
 
http://www.yiiframework.com/doc-2.0/yii ... lue-detail
Ответить