Как включить gii в yii2 advanced
03-12-2018Сразу хочу предупредить: генерация кода будет доступна только из админки (т.к. досутп к ней из фронтенда не совсем безопасное занятие).
Идем в 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' => ['*'],
];
}
В этом случае просто добавляем (раскомментируем) код.
ТЕГи: yii2 Программирование