Phoenix разные заголовки на странице с модулем root - PullRequest
0 голосов
/ 20 июня 2020

Этот вопрос аналогичен (но не является точной копией) Phoenix Framework - заголовки страниц для каждого маршрута .

В идеале я хочу создавать заголовки, как в описанном вопросе, но Я использую макет root, поскольку в моем проекте используется Phoenix LiveView. Каркас HTML, включая теги head и title HTML, является частью шаблона root (root.html.eex). Насколько я понимаю, шаблон приложения расширяется. Я реализовал код из приведенного выше вопроса

<title>
  <%= if Kernel.function_exported?(@view_module, :title, 2) do %>
    <%= @view_module.title(Phoenix.Controller.action_name(@conn), assigns) %> - StHub
  <% else %>
    StHub
  <% end %>
</title>

и создал функцию заголовка внутри моей спецификации c page view

defmodule StHubWeb.WowsView do
  use StHubWeb, :view

  def title(_action, _assigns) do
    "Dashboard"
  end
end

, но ветвь else кода срабатывает. При дальнейшем осмотре я думаю, что проблема связана с использованием шаблона root, потому что @view_module при рендеринге шаблона root - StHubWeb.LayoutView, и только внутри шаблона LayoutView/app.html.eex @view_module мой фактический вид (StHubWeb.WowsView).

Я не уверен, как решить эту проблему, кроме удаления шаблона root, но тогда мой LiveView должен будет содержать весь скелет HTML все время. Возможно, у меня есть способ определить функцию заголовка в моем LayoutView, которая будет извлекать заголовок из StHubWeb.WowsView, но я не уверен, как это сделать.

Спасибо за помощь!

...