我正在使用的网站的每个页面上都有一个侧边栏包含文件。
layout.blade:
<div class="after-login buying-process-wrapper">
<!--page content-->
{{ $content }}
<!-- end of page content-->
<!-- Sidebar -->
@include('layout.sidebar')
<!-- End of Sidebar -->
</div>
我的控制器设置$ layout并呈现上述刀片文件,但是layout.sidebar
是一个包含文件,需要PHP填充其内容。
我可以单独为此边栏设置一个控制器/路由(我该怎么做?),还是我不得不对处理每个控制器中边栏内容的函数重复相同的调用?
我试图找到一个更好的解决方案,而不是每次加载每个页面时都要进入每个控制器并调用-> sidebar()。
谢谢
答案 0 :(得分:0)
为什么您仍在使用Laravel 4.2?现在不是5.7,我强烈建议您升级到最新版本。
回答您的问题:
否,您不需要在每个控制器中调用用于处理侧边栏内容的函数。您可以使用View Composer
在所有或部分视图中共享通用数据。
来自Laravel
4.2 Documentation:
视图编写器是在呈现视图时调用的回调或类方法。如果您每次在整个应用程序中呈现该视图时都希望将其绑定到给定视图,则视图编辑器可以将该代码组织到一个位置。因此,视图编辑器的功能可能类似于“视图模型”或“演示者”。
如果您使用的是Laravel
的较新版本,请记住从右上角切换到正确的文档。
此外,在使用Blade
@include
伪指令时,您可以选择将变量传递到“ included”组件中。
@include('layout.sidebar', ['my_var' => 'value goes here'])
您可以像在刀片服务器模板中一样正常使用{{ $my_var }}
。