我有一个布局:
# main_layout.html.eex
<html>
<head>
<............>
</head>
<div class="main_content">
<%= render(@view_module, @view_template, assigns) %>
</div>
<footer ......>
还有很多子页面。但是,在一些(!)子页面中,我想在
之外呈现html <div class="main_content">
<%= render(@view_module, @view_template, assigns) %>
</div>
也就是说,我想追加一些额外的html到"<footer ...>"
和"<div class="main_content">"
标记
其余页面应继续以正常方式呈现:没有这些额外的htmls部分。
我该怎么做?
答案 0 :(得分:2)
可以根据需要渲染尽可能多的模板。
<div class="main_content">
<%= render(@view_module, @view_template, assigns) %>
</div>
<footer>
<%= render(@footer_module, @footer_template, assigns) %>
</footer>
条件渲染可以从最顶层的模板完成:
<footer>
<%= if ... do %>
<%= render(@footer_module, @footer_template, assigns) %>
<% end %>
</footer>
或者从FooterModule
本身,如果没有必要,则不提供任何内容。
如果您要添加到页脚的信息因孩子而异,请使用Phoenix.View.render_existing/3
并且根本不提供不需要的模板:phoenix会默默地忽略此指令用于不存在的模板。