I’ve managed to thoroughly confuse myself with the Pheonix Elixir docs. I wish the random examples showed the file structures on where the code was located and showed how the system linked together.
Project:
I’m using https://fullstackphoenix.com as a way to speed up the non-fun stuff.
I have it rendering a page, but I can’t link up any form.
router.ex
...
pipeline :browser do
plug :accepts, ["html"]
plug :fetch_session
plug :fetch_live_flash
plug :put_root_layout, {TrwebWeb.LayoutView, :root}
plug :protect_from_forgery
plug :put_secure_browser_headers
end
...
scope "/", TrwebWeb do
pipe_through :browser
get "/terms", PageController, :terms
get "/privacy", PageController, :privacy
get "/cookies", PageController, :cookies
get "/discounts", PageController, :discounts
get "/contact", PageController, :contact
get "/", PageController, :index
end
...
page_controller.ex
defmodule TrwebWeb.PageController do
use TrwebWeb, :controller
def index(conn, _params) do
render(conn, "index.html")
end
def privacy(conn, _params) do
render(conn, "privacy.html")
end
def terms(conn, _params) do
render(conn, "terms.html")
end
def cookies(conn, _params) do
render(conn, "cookies.html")
end
def discounts(conn, _params) do
render(conn, "discounts.html")
end
def contact(conn, _params) do
render(conn, "contact.html")
end
end
Directory for Templates
templates → page → has each of the pages above. Example terms.html.heex
templates → layout → has root.html.heex
, live.html.heex
Root is essentially my index page. live.html.heex
is empty.
Questions:
What is the difference between PageController
, LayoutView
, and PageView
are there limitations for use of LiveView components between them? Or are these just FullStacks ways of managing a project and repetitive.
How do you add assigns to a PageController
to a non *.leex
template?
If this isn’t possible to do what are the best practices for structuring said live components into a static webpage? Or do LiveView
and LivewComponents
only work in *.leex
templates?
Where does assigns
need to be declared, on the template side, root template or on the method to render the template, or both? I have no assigns
found anywhere in the current pre-build setup.
If I can see a clear example of this it will be easy to continue to move on. Everything else like Tailwinds and Apline was easy to get up and running.
Thank you for your time.