Как включить gii в yii2 advanced

03-12-2018
post-image

Содержание:


Сразу хочу предупредить: генерация кода будет доступна только из админки (т.к. досутп к ней из фронтенда не совсем безопасное занятие).

Идем в 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' => ['*'],
    ];
}

В этом случае просто добавляем (раскомментируем) код.


Поделился? Читай дальше =)

Есть что сказать? Давай:

Комментарии:

Нет комментариев =( Так быть не должно!
Напиши что-нибудь хорошее =)

Будь в курсе