1

在 phoenix 模板中区分 HTML 块的推荐方法是什么?

我已阅读文档;它勾勒出以下轮廓;

  • 根布局由路由器中的插件注入
  • 您可以选择在路线上设置布局
  • 您可以选择在视图上设置布局

但是是否有可能(或以其他方式推荐)以某种方式仅覆盖模板块?例如 Django 让你做这样的事情;

base_template

{% block header %}
  <%= render "_header.html", assigns %>
{% endblock %}

{% block content %}
  stuff..
{% endblock %}

继承视图模板

{% extends "base_template.html" %}

{% block header %}
  {{ block.super }}
  <p>my super interesting extra header context</p> <-- !
{% endblock %}

{% block content %}
  stuff..
{% endblock %}
4

1 回答 1

1

所以它类似于 Rails 世界

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 %>
于 2021-01-22T09:01:12.773 回答