Генератор программного кода 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. Находится эта страница по адресу /index.php?r=gii .
Создание модели Gii
На странице управления Gii кликните на кнопку «Start» в разделе создания модели. Затем введите название и кликните «Preview» внизу формы: Система проверит существует ли данная модель, и нет ли других проблем. В нашем случае модель «Animals» уже создана, поэтому необходимо поставить флаг перезаписи в списке под кнопкой «Preview». А затем нажать на нопку «Generate», чтобы перезаписать модель.
Создание представления и контроллера
Теперь можно перейти на второй пункт «CRUD Generator». Эта аббревиатура расшифровывается как «Create», «Read», «Update» и «Delete». С помощью этой формы можно сгенерировать контроллер и представления, в функции которых будут входить элементы управления, чтобы можно было читать, изменять, удалять и добавлять новые элементы в таблицу из публичного раздела сайта. В этой форме необходимо заполнить первые три поля такими данными для нашего примера:
- Model Class: app\models\Animals
- Search Model Class: app\models\AnimalsSearch
- Controller Class: app\controllers\AnimalsController
Затем необходимо нажать на кнопу «Preview», отметить все действия в появившемся списке под кнопкой для выполнения и кликнуть «Generate».
Создание представления и контроллера
Остаётся только протестировать результат на странице /index.php?r=animals/index : Как можно заметить, тут есть и функции редактирования, поиска и сортировки элементов таблицы. Если вас не устраивает визуальное представление или другие функции, то их код всегда можно отредактировать вручную, через файлы.
Как подключить 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’, // . ], вроде и не обязательно
Как запустить gii на yii2 advanced именно во фронтеде?
Добрый вечер дорогие друзья. Мне нужна ваша помощь. Смотрел вначале в интернете разные варианты. ничего не помогает. Как запустить gii на yii2 advanced именно во фронтеде? Ну или хотя бы в бекенде. У меня все время выдает ошибку 404. На версии basic я мог запускать данный генератор. На расширенной версии геморой и подводные камни.
- Вопрос задан более трёх лет назад
- 365 просмотров
14 комментариев
Простой 14 комментариев
Дмитрий @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 Куратор тега 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 и 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 — адрес вашего сервера