#elixir #phoenix-framework #phoenix-live-view
#elixir #phoenix-framework #феникс-просмотр в реальном времени
Вопрос:
Каков рекомендуемый способ дифференцировать HTML-блок в шаблонах phoenix?
Я прочитал документацию; которая рисует следующие контуры;
- корневой макет вводится подключаемым модулем в маршрутизаторе
- вы можете дополнительно установить макет на маршруте
- вы можете дополнительно установить макет для представления
Но возможно ли (или иным образом рекомендуется) каким-либо образом переопределить только блок шаблона? Например, Django позволяет вам делать такие вещи, как;
base_template
{% block header %}
<%= render "_header.html", assigns %>
{% endblock %}
{% block content %}
stuff..
{% endblock %}
inheriting_view_template
{% extends "base_template.html" %}
{% block header %}
{{ block.super }}
<p>my super interesting extra header context</p> <-- !
{% endblock %}
{% block content %}
stuff..
{% endblock %}
Комментарии:
1. ответ на elixirforum; elixirforum.com/t /…
Ответ №1:
Итак, это что-то похожее на Rails world
some_layout.erb
<html>
<body>
<header>
<%= yield :header %>
</header>
<div>
<%= yield :content %>
</div>
<footer>
<%= yield :footer %>
</footer>
</body>
<html>
И просто для обобщения вашего ответа (для дальнейших читателей). Возможны два метода
render_existing
Отображает шаблон, только если он существует.
<head>
<%= render_existing view_module(@conn), "scripts.html", assigns %>
</head>
render_layout
Отображает заданный макет, передавая заданный блок do / end как @inner_content
.
# layout/blog.html.eex
<%= render_layout LayoutView, "app.html", assigns do %>
<div class="sidebar">...</div>
<%= @inner_content %>
<% end %>