123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- defmodule Hello.Web do
- @moduledoc """
- A module that keeps using definitions for controllers,
- views and so on.
- This can be used in your application as:
- use Hello.Web, :controller
- use Hello.Web, :view
- Keep the definitions in this module short and clean,
- mostly focused on imports, uses and aliases.
- """
- def model do
- quote do
- use Ecto.Schema
- import Ecto
- import Ecto.Changeset
- import Ecto.Query
- end
- end
- def controller do
- quote do
- use Phoenix.Controller, log: false
- # Alias the data repository and import query/model functions
- alias Hello.Repo
- import Ecto
- import Ecto.Query
- # Import URL helpers from the router
- import Hello.Router.Helpers
- end
- end
- def view do
- quote do
- use Phoenix.View, root: "web/templates"
- # Import convenience functions from controllers
- import Phoenix.Controller, only: [get_csrf_token: 0, get_flash: 2,
- action_name: 1, controller_module: 1]
- # Import all HTML functions (forms, tags, etc)
- use Phoenix.HTML
- import Hello.Router.Helpers
- end
- end
- def router do
- quote do
- use Phoenix.Router
- end
- end
- def channel do
- quote do
- use Phoenix.Channel
- # Alias the data repository and import query/model functions
- alias Hello.Repo
- import Ecto
- import Ecto.Query
- end
- end
- @doc """
- When used, dispatch to the appropriate controller/view/etc.
- """
- defmacro __using__(which) when is_atom(which) do
- apply(__MODULE__, which, [])
- end
- end
|