2017-04-11 29 views
1

我想向我的布局中添加一个模板,该模板在每个页面上都有相同的数据。例如,每个页面的侧边栏中的最新帖子列表。去做类似的事情最好的方法是什么?将模板和数据添加到Phoenix Framework中的布局文件

我已经研究过的谐音,它好像你从你目前所在的控制器喂数据给它。如果我不想为每个控制器都这样做,那么我只需要添加一个插件到抓取数据的路由器管道中,然后将其馈入到部分?

回答

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> 
相关问题