Herramientas de usuario

Herramientas del sitio


cursos:yii2:views:detail

Vistas Maestro-Detalle

Es habitual que la vista de un modelo (Acciones update, view) se muestren datos del mismo junto con una lista de modelos relacionados con él: comentarios de una entrada de un blog, calificaciones de un artículo en una tienda, una factura con la lista de artículos que contiene…

Para mostrar estos datos, podemos utilizar un GridView o ListView, utilizando un ActiveDataProvider sobre la relación del modelo con la clase detalle:

    ....
    <?= DetailView::widget([
        'model' => $model,
        'attributes' => [
            'nombre',
            ...
        ],
    ]) ?>
    <h3>Comentarios</h3>
    <?= GridView::widget([
        'dataProvider' => new ActiveDataProvider([
                        'query'=>$model->getComentarios()->orderby('fecha'),
                        'pagination'=>['pageSize'=>6,]
                    ]),
        'columns' => [
            'fecha',
            'usuario.nombre',
            ['class' => 'yii\grid\ActionColumn',
                'urlCreator'=>function ($action,$model, $key,  $index) {
                    return Url::toRoute(['comentarios/'.$action,'id'=>$model->id]);
                } 
            ],
 
        ],
    ]); ?>

urlCreator es importante para que las acciones del grid detalle apunten a la acción correcta (en este caso, comentarios/xxx)