I’m new to phoenix and struggling to implement a feature that would allow my users to apply a theme of their choice (e.g. animals, cars, nature).
Each of these themes has its own assets and I’m using put_layout to assign the chosen layout but struggling to render the views according to the chosen theme
My controller looks like this
defmodule Client.PageController do
use Client, :controller
def index(conn, _params) do
theme = get_user_theme(conn)
conn
|> put_layout(theme)
|> render('index.html')
end
end
thanks for catching the type @kokolegorille. The layout part works ok. it’s dynamically rendering the template I’m having trouble with. See the example below
defmodule Client.PageController do
use Client, :controller
def index(conn, _params) do
theme = get_user_theme(conn)
conn
|> put_layout(theme)
|> render('#{theme}/index.html')
end
end
@kokolegorille thanks for your answer. It set me back on track. I was able to get it to to render using by moving and renaming themeA\index.html.eex to page\themeA.index.html.
defmodule MyApp.PageView do
use Phoenix.View, root: "lib/myapp/templates", pattern: "**/*"
end
and now I can do
defmodule MyApp.PageController do
use MyApp, :controller
def index(conn, _params) do
theme = get_user_theme(conn)
conn
|> put_layout(theme)
|> render('#{theme}/index.html')
end
end