Настройка GII в Yii2
Например, в проекте у нас имеется класс common\components\SModel и все классы моделей должны наследоваться от него. И что бы при генерации модели каждый раз не указывать расширяемый класс, то генератор можно настроить в main-local.config
Генератор моделей с предустановленным родительским классом
$config = [ 'components' => [ 'request' => [ 'cookieValidationKey' => '7MQaVU. Y-JC_', ], ], ]; if (!YII_ENV_TEST) $config['bootstrap'][] = 'debug'; $config['modules']['debug'] = [ 'class' => 'yii\debug\Module', ]; $config['bootstrap'][] = 'gii'; // Настраиваем Gii генератор моделей $config['modules']['gii'] = [ 'class' => 'yii\gii\Module', 'generators' => [ 'model' => [ 'class' => 'yii\gii\generators\model\Generator', 'baseClass' => 'common\components\SModel', // Задаем родительский класс 'ns' => 'common\models', // Задаем namespase, если необходимо 'generateLabelsFromComments' => true ] ] ]; > return $config;
Инструмент генерации кода фреймворка Yii2 Gii
PHP фреймворк Yii2 включает в свой состав один замечательный модуль — инструмент генерации кода Gii. Чтобы начать его (Gii) использовать, необходимо чтобы Ваше yii приложение находилось в режиме разработки. За включение/выключение режима разработки отвечает константа YII_ENV_DEV, по умолчанию находящаяся в файле web/index.php. Таким образом, в файле web/index.php должна быть следующая настройка:
defined('YII_DEBUG') or define('YII_DEBUG', true); defined('YII_ENV') or define('YII_ENV', 'dev');
В файле настроек config/web.php необходимо подключить модуль Gii (он подключен по умолчанию)
if (YII_ENV_DEV) < $config['bootstrap'][] = 'debug'; $config['modules']['debug'] = [ 'class' =>'yii\debug\Module', ]; $config['bootstrap'][] = 'gii'; $config['modules']['gii'] = [ 'class' => 'yii\gii\Module', //'allowedIPs' => ['*'] ]; >
Закомментированную строку ‘allowedIPs’ => [‘*’] (Массив IP адресов, которым разрешен доступ к GII) необходимо раскомментировать и установить свои значения адресов, например:
'allowedIPs' => ['*'] //Разрешен доступ с любых IP адресов
'allowedIPs' => ['192.168.0.102'] //Разрешен доступ только с IP адреса локальной сети 192.168.0.102
'allowedIPs' => ['192.168.0.102', '217.118.90.219'] //Разрешен доступ только с IP адреса локальной сети 192.168.0.102 и с 217.118.90.219
После настройки доступа к Gii к нему можно подключиться по ссылке: http://sitename/index.php?r=gii или http://sitename/gii (в зависимости от настроек urlManager)
Gii может генерировать:
- классы моделей (на основе таблиц подключенной базы данных);
- классы CRUD (классы для манипуляций с данными Create-Read-Update-Delete);
- классы контроллеры;
- классы форм;
- модули (например модуль REST Api);
- расширения.
Следует отметить, что Gii очень удобный инструмент кодогенерации, позволяющий значительно сократить время разработки.
Установка Webmin для Armbian (Orange Pi / Raspberry Pi)
Установка webmin для операционной системы Armbian (Orange Pi / Raspberry Pi). Install webmin for armbian.
Текстовое поле с выпадающими подсказками при вводе текста C# WPF XAML
Простая реализация текстового поля с выпадающими подсказками (аналогично поиску у Яндекс и Google) при вводе текста на языке C# WPF. Реализация пользовательского элемента управления в C#/
Yii2 advanced доступ из backend к frontend кэшу
В заметке описан способ доступа к фронтэнд (frontend) кэшу (cache) advanced приложения из бэкэнда (backend) для php фреймворка Yii2.
Как включить Gii и Debugger на сайте Yii 2.x?
По умолчанию в режиме разработчика в файле config/web.php есть исходный код, который активирует и деактивирует Gii и Debugger.
// подключаем пространство имен if (YII_ENV_DEV) < // configuration adjustments for 'dev' environment $config['bootstrap'][] = 'debug'; $config['modules']['debug'] = [ 'class' =>'yii\debug\Module', ]; $config['bootstrap'][] = 'gii'; $config['modules']['gii'] = [ 'class' => 'yii\gii\Module', ]; >
Особенность заключается в том, что данный код работает только на локальном сервере, т.е с адреса 127.0.0.1. При переносе сайта на удаленный сервер и отладчик, и генератор кода перестает работать. Для решение этой проблемы необходимо выяснить ip адрес сервера и добавить адрес в список разрешенных ip адресов.
if (YII_ENV_DEV) < $config['bootstrap'][] = 'debug'; $config['modules']['debug'] = [ 'class' =>'yii\debug\Module', 'allowedIPs' => ['62.162.250.208'], ]; $config['bootstrap'][] = 'gii'; $config['modules']['gii'] = [ 'class' => 'yii\gii\Module', 'allowedIPs' => ['62.162.250.208'] ]; >
Где 62.162.250.208 — адрес вашего сервера
Как включить gii в yii2 advanced
Сразу хочу предупредить: генерация кода будет доступна только из админки (т.к. досутп к ней из фронтенда не совсем безопасное занятие).
Идем в backend\config\ и открываем main-local.php , там ищем такой код:
if (!YII_ENV_TEST) < // configuration adjustments for 'dev' environment $config['bootstrap'][] = 'debug'; $config['modules']['debug'] = [ 'class' =>'yii\debug\Module', ]; $config['bootstrap'][] = 'gii'; $config['modules']['gii'] = [ 'class' => 'yii\gii\Module', ]; >
Если кода нет, копируем и вставляем перед return $config; . Если он есть, но закоментирован — раскоментируй.
Разберемся что тут написано. Сначала мы спрашиваем у константы YII_ENV_TEST true она или не true. Чтобы понимать откуда растут ноги, откройте файлик backend\web\index.php . Найдите строку
defined('YII_ENV') or define('YII_ENV', 'dev');
Значение константы YII_ENV может принимать другие значения:
- prod: окружение production. YII_ENV_PROD установлена в true.
- dev: окружение development. YII_ENV_DEV установлена в true.
- test: окружение testing. YII_ENV_TEST установлена в true.
Соответственно, если настройка конфигурации инициализирована для среды dev, тогда мы попадем в наше условие if() .
Всё, Gii включили =) можно проверять. Открываем http://что-то-там/admin/index.php?r=gii (или http://что-то-там/admin/gii если увас настроены ЧПУ).
Дальше мы можем столкнуться с ошибкой Forbidden (#403). Исправляем
Исправляем ошибку Forbidden (#403) при включении Gii в Yii2 advanced
Если столкнулся с ошибкой 403, значит все модули подключены и генератор кода «виден». Но у нас пока нет к нему доступа. Чтобы исправить эту ошибку открываем файл backend\config\main-local.php и в массив $config[‘modules’][‘gii’] дописываем элемент ‘allowedIPs’ => [‘*’], . После этих манипуляций код будет выглядить следующим образом:
$config['bootstrap'][] = 'gii'; $config['modules']['gii'] = [ 'class' => 'yii\gii\Module', 'allowedIPs' => ['*'], ];
Элемент массива allowedIPs указывает на диапазон IP адресов, которым можно работать с Gii. Значение ‘*’ указывает на то, что все IP’шники могут работать с Gii. Это не совсем безопасно (хотя мы отсеяли кучу народа, у которго нет досутпа в админку). Значением allowedIPs лучше указывать свой IP (твой IP можешь тут).
Исправляем ошибку Not Found (#404) при включении Gii в Yii2 advanced
Ошибка 404 может возникнуть по двум причинам:
1. Если в файле backend\web\index.php константе YII_ENV присваивается значение test .
В этом случае меняем значение на dev или prod (первый предпочтительнее если вы разрабатываете сайт).
2. Если в файле backend\config\main-local.php нет (или он закоментирован) кода
if (!YII_ENV_TEST) < // configuration adjustments for 'dev' environment $config['bootstrap'][] = 'debug'; $config['modules']['debug'] = [ 'class' =>'yii\debug\Module', ]; $config['bootstrap'][] = 'gii'; $config['modules']['gii'] = [ 'class' => 'yii\gii\Module', 'allowedIPs' => ['*'], ]; >
В этом случае просто добавляем (раскомментируем) код.
Помогло? Поделись с друзьями
а в замен я покажу анекдот 😉