Created
March 14, 2021 20:01
-
-
Save mithereal/b50d9975d9c1c079660d2174b0d13afc to your computer and use it in GitHub Desktop.
phoenix liveview helpers
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
defmodule ApiWeb do | |
@moduledoc """ | |
The entrypoint for defining your web interface, such | |
as controllers, views, channels and so on. | |
This can be used in your application as: | |
use ApiWeb, :controller | |
use ApiWeb, :view | |
The definitions below will be executed for every view, | |
controller, etc, so keep them short and clean, focused | |
on imports, uses and aliases. | |
Do NOT define functions inside the quoted expressions | |
below. Instead, define any helper function in modules | |
and import those modules here. | |
""" | |
def controller do | |
quote do | |
use Phoenix.Controller, namespace: ApiWeb | |
import Plug.Conn | |
import ApiWeb.Gettext | |
alias ApiWeb.Router.Helpers, as: Routes | |
end | |
end | |
def view do | |
quote do | |
use Phoenix.View, | |
root: "lib/api_web/templates", | |
namespace: ApiWeb | |
use Phoenix.HTML | |
# Import convenience functions from controllers | |
import Phoenix.Controller, | |
only: [get_flash: 1, get_flash: 2, view_module: 1, view_template: 1] | |
# Include shared imports and aliases for views | |
unquote(view_helpers()) | |
end | |
end | |
def live_view(layout \\ "front") do | |
quote do | |
use Phoenix.LiveView, | |
layout: {ApiWeb.LayoutView, "live/" <> layout <> ".html"} | |
unquote(view_helpers()) | |
end | |
end | |
def live_component do | |
quote do | |
use Phoenix.LiveComponent | |
unquote(view_helpers()) | |
end | |
end | |
def router do | |
quote do | |
use Phoenix.Router | |
import Plug.Conn | |
import Phoenix.Controller | |
import Phoenix.LiveView.Router | |
import Phoenix.LiveView.Helpers | |
end | |
end | |
def channel do | |
quote do | |
use Phoenix.Channel | |
import ApiWeb.Gettext | |
end | |
end | |
defp view_helpers do | |
quote do | |
# Use all HTML functionality (forms, tags, etc) | |
use Phoenix.HTML | |
# Import LiveView helpers (live_render, live_component, live_patch, etc) | |
import Phoenix.LiveView.Helpers | |
import ApiWeb.LiveHelpers | |
# Import basic rendering functionality (render, render_layout, etc) | |
import Phoenix.View | |
import ApiWeb.ErrorHelpers | |
import ApiWeb.Gettext | |
alias ApiWeb.Router.Helpers, as: Routes | |
def render_partial(template, assigns \\ []) do | |
render(ApiWeb.PartialView, template, assigns) | |
end | |
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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
defmodule ApiWeb.PartialsView do | |
use ApiWeb, :view | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment