Cambiando la plantilla de migraciones en Yii2

Cada vez que creaba una migración, con ./yii migrate/create nombre, recibía algo similar al siguiente código:

<?php

use yii\db\Migration;

/**
 * Class m171121_211644_migration_test
 */
class m171121_211644_migration_test extends Migration
{
    /**
     * @inheritdoc
     */
    public function safeUp()
    {

    }

    /**
     * @inheritdoc
     */
    public function safeDown()
    {
        echo "m171121_211644_migration_test cannot be reverted.\n";

        return false;
    }

    /*
    // Use up()/down() to run migration code without a transaction.
    public function up()
    {

    }

    public function down()
    {
        echo "m171121_211644_migration_test cannot be reverted.\n";

        return false;
    }
    */
}

Por supuesto, de la línea 28 a la 41 son comentarios. Tal vez alguien los utilice, pero yo no.

Así que, como cada migración creada eliminaba ese texto (sí, son comentarios, no hacen nada, pero no me gustan), me di a la tarea de modificar la plantilla.

Afortunadamente, esto es muy fácil de hacer, como se describe en Yii 2 Community Cookbook.

Primero, copiamos la plantilla original. Si no cambiaste nada de los parámetros originales, la plantilla reside en ./vendor/yiisoft/yii2/views/migration.php.

Esta plantilla la puedes copiar a donde tú gustes. Tal vez a ./console/templates/migration.php, editando lo que no quieres, o agregando lo que deseas.

En mi caso, es eliminar los comentarios, así que eso hago:

<?php
/**
 * This view is used by console/controllers/MigrateController.php.
 *
 * The following variables are available in this view:
 */
/* @var $className string the new migration class name without namespace */
/* @var $namespace string the new migration class namespace */

echo "<?php\n";
if (!empty($namespace)) {
    echo "\nnamespace {$namespace};\n";
}
?>

use yii\db\Migration;

/**
 * Class <?= $className . "\n" ?>
 */
class <?= $className ?> extends Migration
{
    /**
     * @inheritdoc
     */
    public function safeUp()
    {

    }

    /**
     * @inheritdoc
     */
    public function safeDown()
    {
        echo "<?= $className ?> cannot be reverted.\n";

        return false;
    }
}

Ahora hay que configurar esta nueva trayectoria. Si estás utilizando la plantilla avanzada, hay que añadir lo siguiente a ./console/config/main.php:

return [
...
    'controllerMap' => [
        'migrate' => [
            'class' => 'yii\console\controllers\MigrateController',
            'templateFile' => '@console/templates/migration.php',
        ],
    ],
...
]

Y eso es todo.

La próxima migración que realice ya no traerá esos fastidiosos comentarios.


Ver todas las entradas »