从控制器渲染视图时,标准做法是将代码放入控制器,然后将必要的变量传递给视图,以便在渲染时使用它们。
此视图通常会扩展布局视图。
我在哪里放置布局视图中必要的代码,以及如何注入它?
我查看了官方Laravel代码中的登录/注册按钮作为示例。 要正确呈现它们,视图中需要用户当前是否登录的信息。
在Laravel中,这看起来像这样:
@if (Auth::guest())
<li><a href="{{ url('/login') }}">Login</a></li>
<li><a href="{{ url('/register') }}">Register</a></li>
@else
...
因此视图实际上是自己获取数据。即使代码包含在一个函数中,这也违背了我对代码分离的理解。根据我的理解,必须将必要的数据传递给视图,而不是依赖任何外部方法。如果方法名称改变了怎么办。
在laravel中有更好的方法吗?
例如在Zend / Magento中有一个&#34; block&#34;的概念。其中有一个类,其代码与视图相对应,可用于提供数据。
将它放在中间件或服务提供商中是否有意义?
答案 0 :(得分:1)
老实说,我认为这绝对没问题,但是如果你想把它包含在一个变量中,你会想把它放在一个视图编辑器中,你检查当前用户是否是一个访客,并且然后与逻辑适用的所有视图共享该视图作曲家。
此处有关于L5.2的文档:http://laravel.com/docs/5.2/views#view-composers
请注意,过去视频作曲家的分享方式略有改变,因此请务必查看您正在使用的版本的文档。