Я написал свой код так:
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
//['class' => 'yii\grid\SerialColumn'],
'quantity',
[
'header' => 'SN',
'format' => 'raw',
'value' => function($data) {
$product = Product::findOne($data->product_ID);
return $product->SN_required ? '<span class="glyphicon glyphicon-ok"></span>' : '';
}
],
Чтобы показать это так:
Все же я думаю, что это не правильно (даже если это работает). Может кто-нибудь дать мне правильную запись для такого рода кода?
Я знаю, что это связано с модельными отношениями. Это было изменено в Yii2.
public function getProduct()
{
return $this->hasOne(Product::className(), ['ID' => 'product_ID']);
}
Вы были на правильном пути. Вы можете получить доступ к отношениям внутри замыкания, используя $data->relation
в твоем случае:
'value' => function($data) {
return $data->product->SN_required ? '<span class="glyphicon glyphicon-ok"></span>' : '';
}
Вы можете просмотреть Страница Yii2 по работе со связями в виджетах данных для дополнительной информации.
Других решений пока нет …