将数据模板添加到Phoenix Framework中的布局文件

时间:2017-04-11 06:09:19

标签: elixir phoenix-framework

我想在我的布局中添加一个模板,每个页面上都有相同的数据。例如,每个页面边栏中的最近帖子列表。这样做的最佳方法是什么?

我已经查看了部分内容,您似乎是从当前使用的控制器向其提供数据。如果我不想为每个控制器执行此操作,我是否只需将一个插头添加到路由器管道中以获取数据,然后将其提供给部分数据?

1 个答案:

答案 0 :(得分:2)

您可以根据需要创建视图和模板,并将其添加到布局视图中。

例如:

# views/sidebar_view.ex

defmodule YourApp.SidebarView do
  use YourApp.Web, :view

  def recent_posts() do
    Post.get_recent_posts()
  end
end
<!-- templates/layout/sidebar.html.eex -->

<ul>
  <%= for post <- recent_posts() do %>
    <li><%= post.title %></li>
  <% end %>
</ul>

最后,在你的布局中:

<!-- templates/layout/app.html.eex -->

<main role="main">
  <%= render @view_module, @view_template, assigns %>
</main>

<aside role="complementary">
  <%= render YourApp.SidebarView, "sidebar.html" %>
</aside>