Categoría Detalle Yii2 Variante 2

 Pasos para crear la variante 2 de categoría detalle:

1.- Generar el crud de author_book 

    Model Class:

    backend\modules\bookstore\models\AuthorBook\AuthorBook

    Search Model Class:

    backend\modules\bookstore\models\AuthorBook\AuthorBookSearch

    Controller Class:

    backend\modules\bookstore\controllers\AuthorBookController

    View Path:

    @backend/modules/bookstore/views/author-book


2.- Agregar una columna:

 [
    'attribute' => 'author_id', 
    'value' => 'author.name',
     'group' => true,  // enable grouping,
    'groupedRow' => true,                    // move grouped column to a single grouped row
    'groupOddCssClass' => 'kv-grouped-row',  // configure odd group cell css class
    'groupEvenCssClass' => 'kv-grouped-row', // configure even group cell css class
],

3.-  Ir al modelo de Búsqueda y agregar

  public $authorName;
  public $bookName;

4.- En el modelo de búsqueda agregar en las rules

 [['authorName', 'bookName'], 'safe'],


5.- Añadir encima de los filtros:

    $query->innerJoin('book','book.id = author_book.book_id');
    $query->innerJoin('author','author.id = author_book.author_id');


6.- Añadir el ordenar:

 $dataProvider->setSort([
            'defaultOrder' => [
                'authorName' => SORT_ASC
            ],
            'attributes' => [
                'author_id',
                'book_id',
                'authorName' => [
                    'asc' => ['author.name' => SORT_ASC],
                    'desc' => ['author.name' => SORT_DESC],
                ], 
                'bookName' => [
                    'asc' => ['book.name' => SORT_ASC],
                    'desc' => ['book.name' => SORT_DESC],
                ],

               
               
            ]
        ]);

7.- Añadir los filtros:

$query->andFilterWhere([
            'author_book.id' => $this->id,
            'author_book.author_id' => $this->author_id,
            'author_book.book_id' => $this->book_id,
        ]);  


    $query->andFilterWhere([
        'LIKE','author.name', $this->authorName,
        ]); 
    $query->andFilterWhere([
        'LIKE','book.name', $this->bookName,
        ]);


8.- Añadir las columnas:

[
    'attribute' => 'authorName', 
    'label' =>  Yii::t('app', 'Author'),
    'value' => 'author.name' ,
    'group' => true, 
], 
[
    'attribute' => 'bookName', 
    'value' => 'book.name' ,
    'label' =>  Yii::t('app', 'Book'),
],

9.- Añadir en el mensaje:
 
  'Author' => 'Autor',
  'Book' => 'Libros',
  'Author Books' => 'Autor Libros',

10.- Revisar la documentación en los ejemplos:
    https://demos.krajee.com/group-grid

Pueden ver el funcionamiento en mi canal de YouTube: 
https://youtu.be/kqeqTlF4Qns








Comentarios

Entradas populares de este blog

AdminLTE3 integración Yii2

RBAC Yii2 utilizando la extensión "yii2mod/yii2-rbac": "*"

Integración AdminLTE2 Yii2