Перейти к содержимому

Yii2 gii как запустить

  • автор:

Генератор программного кода Gii в Yii

В прошлой статье «Взаимодействие с базой данных в Yii» был разобран пример вывода списка из базы данных. Для этого в базе была создана таблица «animals» с полями «name» и «food». Таблица была заполнена примерами данных (названиями животных и их любимой едой).

Для организации вывода данных таблицы выл написан код контроллера controllers/AnimalsController.php с действием «actionList», представление views/animals/list.php и модель models/Animals.php .

Все было запрограммировано в ручном режиме. Но в Yii есть модуль Gii, который позволяет генерировать подобный код автоматически, что облегчает жизнь разработчикам. В этой статье попробуем сделать все действия из предыдущей, только с использованием Gii.

Активация Gii

Сначала необходимо убедиться, что модуль Gii активен. Для этого он должен быть перечислен в файле конфигурации config/web.php так:

$config = [ . ]; if (YII_ENV_DEV) < // если приложение в режиме разработки $config['bootstrap'][] = 'gii'; $config['modules']['gii'] = [ 'class' =>'yii\gii\Module', 'allowedIPs' => ['ваш_ip_адрес'], ]; >

Вставьте вместо «ваш_ip_адрес» свой внешний ip (его можно узнать через поисковик). Это нужно, потому что Gii позволяет получить прямой доступ к базе. Поэтому если посторонний получит доступ к системе управления Gii, то сможет навредить проекту.

Если открыть файл /index.php в корневой веб папке, то там будет строка, указывающая на то, что приложение находится в разработке:

defined('YII_ENV') or define('YII_ENV', 'dev');

Страница управления модулем Gii в фреймворке Yii

Если это строка присутствует, то остаётся только перейти на страницу управления модулем Gii. Находится эта страница по адресу /index.php?r=gii .

Создание модели Gii

Страница создение модли модулем Gii в фреймворке Yii

На странице управления Gii кликните на кнопку «Start» в разделе создания модели. Затем введите название и кликните «Preview» внизу формы: Система проверит существует ли данная модель, и нет ли других проблем. В нашем случае модель «Animals» уже создана, поэтому необходимо поставить флаг перезаписи в списке под кнопкой «Preview». А затем нажать на нопку «Generate», чтобы перезаписать модель.

Создание представления и контроллера

CRUD Generator модуля Gii в фреймворке Yii

Теперь можно перейти на второй пункт «CRUD Generator». Эта аббревиатура расшифровывается как «Create», «Read», «Update» и «Delete». С помощью этой формы можно сгенерировать контроллер и представления, в функции которых будут входить элементы управления, чтобы можно было читать, изменять, удалять и добавлять новые элементы в таблицу из публичного раздела сайта. В этой форме необходимо заполнить первые три поля такими данными для нашего примера:

  • Model Class: app\models\Animals
  • Search Model Class: app\models\AnimalsSearch
  • Controller Class: app\controllers\AnimalsController

Затем необходимо нажать на кнопу «Preview», отметить все действия в появившемся списке под кнопкой для выполнения и кликнуть «Generate».

Создание представления и контроллера

Страница, созданная с помощью модуля Gii в фреймворке Yii

Остаётся только протестировать результат на странице /index.php?r=animals/index : Как можно заметить, тут есть и функции редактирования, поиска и сортировки элементов таблицы. Если вас не устраивает визуальное представление или другие функции, то их код всегда можно отредактировать вручную, через файлы.

Как запустить gii на yii2 advanced именно во фронтеде?

Добрый вечер дорогие друзья. Мне нужна ваша помощь. Смотрел вначале в интернете разные варианты. ничего не помогает. Как запустить gii на yii2 advanced именно во фронтеде? Ну или хотя бы в бекенде. У меня все время выдает ошибку 404. На версии basic я мог запускать данный генератор. На расширенной версии геморой и подводные камни.

  • Вопрос задан более трёх лет назад
  • 364 просмотра

14 комментариев

Простой 14 комментариев

slo_nik

Дмитрий @slo_nik Куратор тега Yii
Добрый вечер.
А какой адрес Вы указываете?
JohnSky7 @JohnSky7 Автор вопроса

slo_nik, site2/frontend/web/gii
site2 это папка, где у меня находится сайт.
так же в папке fronted->config->main-local->php я указал свой айпи адрес в ‘allowedIPs’ => [‘мой айпи’, ‘::1’],
‘::1’ я не знаю зачем нужен. у человека в гайде был. но нет разницы с ним или без него. не могу запустить

JohnSky7 @JohnSky7 Автор вопроса
slo_nik, К сожалению та же самая ошибка 404

slo_nik

Дмитрий @slo_nik Куратор тега Yii

JohnSky7, в значениях параметра «allowedIPs» вы указывает для каких ip адресов показывать debug панель, а для каких нет.

JohnSky7 @JohnSky7 Автор вопроса

slo_nik,
$config = [
‘components’ => [
‘request’ => [
// . insert a secret key in the following (if it is empty) — this is required by cookie validation
‘cookieValidationKey’ => ‘TwzWwZNxRu1kETFdHHtQbUKUuAHZtNik’,
],
],
];

if (!YII_ENV_TEST) // configuration adjustments for ‘dev’ environment
$config[‘bootstrap’][] = ‘debug’;
$config[‘modules’][‘debug’] = [
‘class’ => ‘yii\debug\Module’,
‘allowedIPs’ => [‘37.147.190.194’, ‘::1’],
];

$config[‘bootstrap’][] = ‘gii’;
$config[‘modules’][‘gii’] = [
‘class’ => ‘yii\gii\Module’,
‘allowedIPs’ => [‘37.147.190.194’, ‘::1’],

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

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' => ['*'], ]; > 

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

Помогло? Поделись с друзьями

а в замен я покажу анекдот 😉

Как подключить Gii в Yii2 advanced

Я установить его через Composer, прописал настройки в frontend/config/main.php, но по адресу /index.php?r=gii ничего не показывается, то есть показывается стандартная страница. Что я сделал не так? frontend/config/main.php

'bootstrap' => ['gii'], 'modules' => [ 'gii' => 'yii\gii\Module', // . ], 

Отслеживать
задан 7 сен 2016 в 12:56
2,563 1 1 золотой знак 20 20 серебряных знаков 47 47 бронзовых знаков

прописал настройки в frontend/config/main.php . какие? добавьте конфиг в вопрос . и есть ли с common конфиг main-local ?

7 сен 2016 в 13:33
Добавил конфиг в вопрос. в папке common есть конфиг main-local
7 сен 2016 в 13:41

Это какой-то маааааленький конфиг. вы его весь выложите. А в common/main-local есть строки ‘urlManager’ => [ ‘enablePrettyUrl’ => true, ], ? . а во frontend и backend есть main-local? там же уже gii должен быть прописан

7 сен 2016 в 13:43

в common/main-local такого нету, такое есть в frontend/config/main . и да, в frontend/config/main-local gii уже прописан

7 сен 2016 в 13:50

В этом наверное и проблема. это позволяет писать красивые урлы. Т.е. можно писать mysite.ru/gii . правда при наличии опции ‘request’=>[ ‘baseUrl’=>», ], . А если поставить ‘enablePrettyUrl’ => false, то можно писать index.php?r=gii и раз в main-local подключен gii, то в main писать ‘modules’ => [ ‘gii’ => ‘yii\gii\Module’, // . ], вроде и не обязательно

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *