Spec-Zone.ru › Phoenix

mix phx.gen.live

Исходный код

Создаёт LiveView, шаблоны и контекст для ресурса.

Формат:

$ mix phx.gen.live [<context>] <schema> <table> <attr:type> [<attr:type>...]

Например:

$ mix phx.gen.live User users name:string age:integer

Будет создана схема User для таблицы users в контексте Users с атрибутами name (строка) и age (целое число).

Если контекст определён однозначно, его имя также можно указать явно в качестве аргумента:

$ mix phx.gen.live Accounts User users name:string age:integer

Первый аргумент — модуль контекста (Accounts), за которым следуют модуль схемы (User), имя таблицы (users) и атрибуты.

Контекст — это модуль Elixir, который служит границей API для данного ресурса. Контекст часто содержит множество связанных ресурсов. Поэтому, если контекст уже существует, в него будут добавлены функции для данного ресурса.

Схема отвечает за сопоставление полей базы данных со структурой Elixir. Далее следует список атрибутов с соответствующими именами и типами. Подробнее об атрибутах см. в разделе mix phx.gen.schema.

В целом этот генератор добавит следующие файлы в lib/:

  • модуль контекста в lib/app/accounts.ex для API учётных записей
  • схему в lib/app/accounts/user.ex с таблицей users
  • LiveView в lib/app_web/live/user_live/show.ex
  • LiveView в lib/app_web/live/user_live/index.ex
  • LiveView в lib/app_web/live/user_live/form.ex
  • модуль компонентов в lib/app_web/components/core_components.ex, если он ещё не существует

После завершения генерации файлов будет выведена информация о необходимых изменениях в файле lib/app_web/router.ex.

Add the live routes to your browser scope in lib/app_web/router.ex:

  live "/users", UserLive.Index, :index
  live "/users/new", UserLive.Form, :new
  live "/users/:id", UserLive.Show, :show
  live "/users/:id/edit", UserLive.Form, :edit

Области видимости

Если в конфигурации приложения задана собственная область видимости scope по умолчанию, этот генератор автоматически обеспечит правильное применение областей видимости ко всем операциям контекста. Чтобы отключить применение областей видимости, передайте флаг --no-scope.

Конфигурация зонтичного приложения

По умолчанию Phoenix добавляет функциональность веб-уровня и предметной области в одно приложение. В зонтичных приложениях эти компоненты обычно разделены на два приложения: приложение контекста — назовём его my_app — и его веб-уровень, который Phoenix предполагает назвать my_app_web.

Чтобы указать Phoenix использовать такой подход, задайте параметр конфигурации :context_app в файле my_app_umbrella/config/config.exs:

config :my_app_web,
  ecto_repos: [Stuff.Repo],
  generators: [context_app: :my_app]

В качестве альтернативы параметр --context-app можно передать генератору:

$ mix phx.gen.html Accounts User users --context-app my_app

Пространство имён веб-уровня

По умолчанию модули LiveView определяются в папке с именем схемы, например lib/app_web/live/user_live. Можно добавить дополнительные пространства имён, передав флаг --web с именем модуля, например:

$ mix phx.gen.live Accounts User users --web Accounts name:string

В результате LiveView будут созданы в lib/app_web/live/accounts/user_live/, в пространстве имён AppWeb.Accounts.UserLive вместо AppWeb.UserLive.

Настройка контекста, схемы, таблиц и миграций

В некоторых случаях может потребоваться создать HTML-шаблоны, LiveView и тесты, но самостоятельно реализовать внутреннюю часть контекста или схемы. Для управления генерацией файлов можно использовать флаги --no-context и --no-schema. Обратите внимание: --no-context подразумевает --no-schema:

$ mix phx.gen.live Accounts User users --no-context name:string

В перечисленных выше случаях тесты всё равно создаются, но все они завершатся с ошибкой.

Также можно изменить имя таблицы или настроить миграции для использования двоичных идентификаторов в качестве первичных ключей. Подробнее см. в разделе mix help phx.gen.schema.

Пакет Hex Предпросмотр Hex Скачать версию ePub

Создано с помощью ExDoc (v0.40.3) для языка программирования Elixir

© 2014 Chris McCord
Licensed under the MIT License.
https://phoenix.hexdocs.pm/Mix.Tasks.Phx.Gen.Live.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API