【问题标题】:Adding template with data to layout file in Phoenix Framework在 Phoenix Framework 中将带有数据的模板添加到布局文件
【发布时间】:2017-04-15 20:18:49
【问题描述】:

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

我研究了部分数据,看起来您从当前使用的控制器向它提供数据。如果我不想对每个控制器都这样做,我是否只需在路由器管道中添加一个插件来获取数据,然后将其馈送到部分控制器中?

【问题讨论】:

    标签: elixir phoenix-framework


    【解决方案1】:

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

    例如:

    # 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>
    

    【讨论】:

      猜你喜欢
      • 2016-12-08
      • 1970-01-01
      • 2015-10-11
      • 2018-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多