Skip to content

Latest commit

 

History

History
67 lines (50 loc) · 4.92 KB

060-064 Генерация кода.md

File metadata and controls

67 lines (50 loc) · 4.92 KB

Генерация кода

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

Подготовка

1 Создайте новое приложение с помощью composer, как описано в официальном руководстве по http://www.yiiframework.com/doc-2.0/guide-start-installation.html. по русски <http://yiiframework.domain-na.me/doc/guide/2.0/ru/start-installation >

2 Скачать база данных "sakila" c http://dev.mysql.com/doc/indey-other.html.

3 Выполните загрузку SQL: сначала схема, затем данные.

4 Настройте подключение к базе данных в config/main.php для использования базы данных Sakila.

5 Запустите веб-сервер с помощью./yii serve. (от переводчика: или другим способом)

Как это сделать...

1 Перейдите по адресу http: //localhost :8080/index. php?r=gii и выберите Model Generator.

2 Заполните Table Name как actor и Model Class как Actor и нажмите кнопку Generate внизу страницы

3 Вернуться к главному меню GII, нажав на логотип в заголовке и выбрав CRUD Generator.

4 Заполнит поле Model Class как app\models\Actor и Controller Class как app\controllers\ActorController.

5 Нажмите кнопку Preview в нижней части страницы, а затем нажмите зеленую кнопку Generate.

6 Проверьте результат по адресу http://localhost:8080/index.php?actor/create.

Как это работает…

Если вы проверите структуру проекта, вы увидите автоматически созданный код:

Сначала мы создали модель Actor. Gii автоматически создает все модельные правила, которые зависят от типов полей mysql. Например, если в Вашей таблице MySQL actor поля first_name и last_name имеют флаг NOT NULL, то Yii автоматически создает правило для него required и устанавливает максимальную длину 45 символов, потому что в нашей базе данных Максимальная длина этого поля установлена как 45

public function rules()
{
  return [
   [['first_name', 'last_name'], 'required'],
   [['last_update'], 'safe'],
   [['first_name', 'last_name'], 'string', 'max' => 45],
}

Кроме того, yii автоматически создает отношения между моделями на основе внешних ключей, добавленных в базу данных. В нашем случае два отношения были созданы автоматически .

public function getFilmActors()
{
     return $this->hasMany(FilmActor::className(), ['actor_id' => 'actor_id']);
}
public function getFilms()
{
     return $this->hasMany(Film::className(), ['film_id' => 'film_id'])->viaTable('film_actor', ['actor_id' => 'actor_id']);
}

Это отношение было создано, потому что у нас есть два внешних ключа в нашей базе данных. Таблица film_actor имеет внешний ключ fk_film_actor_actor, который указывает на поля таблицы Actor actor_id и fk_film_actor_film что указывает на таблицу Film поле film_id. Обратите внимание, что модель FilmActor еще не создана. Поэтому, если вы будете разрабатывать полное приложение , вы должны будете генерировать также модели Film, FilmActor . Для остальных частей обратитесь к http://www.yiiframework.com/doc-2.0/guide-start-gii.html. по русски http://yiiframework.domain-na.me/doc/guide/2.0/ru/start-gii