carono/yii2-giix

Yii2 gii generator based on schmunk42 yii2-giiant

Installs: 6 373

Dependents: 1

Suggesters: 0

Security: 0

Stars: 5

Watchers: 3

Forks: 0

Open Issues: 1

Type:yii2-extension

0.4.8 2023-02-18 08:37 UTC

README

composer require carono/yii2-giix

Введение

Компонент для массовой генерации базовых моделей на основе schmunk42/yii2-giiant

Использование

После подключения пакета, через bootstrap добавляется команда в консольное приложение
yii giix

Генерируемые файлы

[app]
    [models] Неперезаписываемые модели
        [base] Перезаписываемые базовые модели
        [query] Неперезаписываемые модели запросов    
            [base] Перезаписываемые базовые модели запросов

Изменение шаблонов генератора

В конфиге настраиваем генератор

 'controllerMap' => [
        'giix' => [
            'class' => 'carono\giix\GiixController',
            'templatePath' => '@app/templates/model',
            'generator' => [
                'class' => 'carono\giix\generators\model\Generator'
            ]
        ],
    ],

Создаём новый класс, который будет создаваться на каждую таблицу

<?php

namespace app\templates\model;

use carono\codegen\ClassGenerator;
use Nette\PhpGenerator\Method;

class Finder extends ClassGenerator
{
    protected function formExtends()
    {
        return 'yii\base\Model';
    }

    protected function formClassNamespace()
    {
        return 'app\models\finders';
    }

    protected function formClassName()
    {
        return $this->params['className'] . 'Finder';
    }

    protected function formOutputPath()
    {
        return \Yii::getAlias('@app/models/finders/' . $this->formClassName() . '.php');
    }

    /**
     * @param Method $method
     */
    public function myFunction($method)
    {
        $method->addParameter('param');
        $method->addBody('echo "Hello World";');
    }
}

На выходе получаем в папке models/finders файлы:

<?php

/**
 * This class is generated using the package carono/codegen
 */

namespace app\models\finders;

class UserFinder extends \yii\base\Model
{
	public function myFunction($param)
	{
		echo "Hello World";
	}
}

Шаблоны

Класс Описание
carono\giix\templates\model\Model Базовый класс модели, перезаписывается
carono\giix\templates\model\ModelExtended Основной класс модели
carono\giix\templates\model\Query Базовый класс модели запроса, перезаписывается
carono\giix\templates\model\QueryExtended Основной класс запроса