Entradas

Mostrando entradas de octubre, 2020

Implementando un formulario tipo Wizard con un formulario Tabular

Imagen
Vamos a estar unificando varios formularios en uno, y además utilizando el formulario tabular de esta extensión:  1.- Instalar widget de formwizard, añadir al composer.json: "buttflattery/yii2-formwizard":"@dev" 1.1.- Ejecutar  en el cmd de la carpeta del proyecto: composer update --prefer-dist 2.- Colocar en el form el use del widget: use buttflattery\formwizard\FormWizard; 3.- Colocar el form: <?= FormWizard::widget(     [         'formOptions' => [             'id' => 'my_form_tabular'                      ],         'theme' => FormWizard::THEME_ARROWS,         'labelNext' => Yii::t('app', 'Next'),         'labelPrev' => Yii::t('app', 'Previous'),         'labelFinish' => Yii::t('app', 'Finish'),                  'steps' => [         [                 'model' => $author,                 'title' => Yii::t(

Formulario con Select2 Kartik Múltiple

Imagen
En esta entrada les muestro como modificar el formulario para que podamos ingresar múltiples elementos en el selector y como guardar en el modelo:  1.- Modificar el formulario colocando los selectores:  <?=  $form->field($model, 'author_id')->widget(Select2::classname(), [     'data' => ArrayHelper::map(Author::find()->all(), 'id', 'name'),     'theme' => Select2::THEME_BOOTSTRAP,     'size' => Select2::LARGE,     'options' => ['placeholder' => Yii::t('app', 'Select...')],     'pluginOptions' => [         'allowClear' => true     ], ]);      ?>    <?=  $form->field($model, 'bookArray')->widget(Select2::classname(), [     'data' => ArrayHelper::map(Book::find()->all(), 'id', 'name'),     'theme' => Select2::THEME_BOOTSTRAP,     'size' => Select2::LARGE,     'op

Formulario con Select2

Imagen
En esta entrada les muestro como modificar un formulario generado de una tabla de muchos a muchos:  1.- Modificar el formulario colocando los selectores:  <?=  $form->field($model, 'author_id')->widget(Select2::classname(), [     'data' => ArrayHelper::map(Author::find()->all(), 'id', 'name'),     'theme' => Select2::THEME_BOOTSTRAP,     'size' => Select2::LARGE,     'options' => ['placeholder' => Yii::t('app', 'Select...')],     'pluginOptions' => [         'allowClear' => true     ], ]);      ?>  <?=  $form->field($model, 'book_id')->widget(Select2::classname(), [     'data' => ArrayHelper::map(Book::find()->all(), 'id', 'name'),     'theme' => Select2::THEME_BOOTSTRAP,     'size' => Select2::LARGE,     'options' => ['placeholder' => Yii::t

Categoría Detalle Yii2 Variante 2

Imagen
 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 m

Bootstrap 4 en la Plantilla de Yii2

Imagen
Pasos para colocar bootstrap4 en la plantilla de Yii2 1.- En el archivo frontend/assets/AppAsset.php sustituir bootstrap por bootstrap4                   public $depends = [         'yii\web\YiiAsset',         'yii\bootstrap\BootstrapAsset',     ];           Sustituir por:       public $depends = [         'yii\web\YiiAsset',         'yii\bootstrap4\BootstrapAsset',     ];      2.- En el archivo  frontend/views/layouts/main.php:      use yii\bootstrap\Nav;      use yii\bootstrap\NavBar;      use yii\widgets\Breadcrumbs;      use common\widgets\Alert;      Sustituir por:      use yii\bootstrap4\Nav;      use yii\bootstrap4\NavBar;      use yii\bootstrap4\Breadcrumbs;      use hail812\adminlte3\widgets\Alert;      3.- En el archivo frontend/views/layouts/main.php:         NavBar::begin([         'brandLabel' => Yii::$app->name,         'brandUrl' => Yii::$app->homeUrl,         'options' => [             'class'

Columna Expandible de Kartik Categoría Detalle

 1.- Crear las tablas en la base de datos: CREATE TABLE `yii2_proyecto`.`author` ( `id` INT NOT NULL AUTO_INCREMENT , `name` VARCHAR(255) NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB; CREATE TABLE `yii2_proyecto`.`author` ( `id` INT NOT NULL AUTO_INCREMENT , `name` VARCHAR(255) NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB; CREATE TABLE `yii2_proyecto`.`author_book` ( `id` INT NOT NULL AUTO_INCREMENT , `author_id` INT NOT NULL , `book_id` INT NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB; ALTER TABLE `author_book` ADD FOREIGN KEY (`author_id`) REFERENCES `author`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE `author_book` ADD FOREIGN KEY (`book_id`) REFERENCES `book`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; 2.- Crear el módulo: Module Class: frontend\modules\library\Module; Module ID: library Añadir en el main.php:  'library' =>         [             'class' => 'frontend\modules\library\Module',         ], 3.- Crear el modelo de Author en el

Modificando el template de gii con el Gridview de Kartik

Imagen
 1.- Sustituir para colocar el use a la extensión de Kartik use <?= $generator->indexWidgetType === 'grid' ? "yii\\grid\\GridView" : "yii\\widgets\\ListView" ?>; por use <?= $generator->indexWidgetType === 'grid' ? "kartik\\grid\\GridView" : "yii\\widgets\\ListView" ?>; 2.- Eliminar la línea: <h1><?= "<?= " ?>Html::encode($this->title) ?></h1> 3.- Incluir esta línea en en Gridview para activar pjax:    'pjax'=> <?= $generator->enablePjax ? "true" : "false"  ?>, 4.- Añadir estas líneas debajo del pjax:        'responsive'=>true,         'hover'=>true,         'toolbar'=>[             '{export}',             '{toggleData}'         ],         'panel' => [             'heading'=> $this->title,             'type'=>'info',             'before&#