在Laravel中放置布局所需的代码?

时间:2016-05-22 21:23:03

标签: php laravel laravel-blade

从控制器渲染视图时,标准做法是将代码放入控制器,然后将必要的变量传递给视图,以便在渲染时使用它们。

此视图通常会扩展布局视图。

我在哪里放置布局视图中必要的代码,以及如何注入它?

我查看了官方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;的概念。其中有一个类,其代码与视图相对应,可用于提供数据。

将它放在中间件或服务提供商中是否有意义?

1 个答案:

答案 0 :(得分:1)

老实说,我认为这绝对没问题,但是如果你想把它包含在一个变量中,你会想把它放在一个视图编辑器中,你检查当前用户是否是一个访客,并且然后与逻辑适用的所有视图共享该视图作曲家。

此处有关于L5.2的文档:http://laravel.com/docs/5.2/views#view-composers

请注意,过去视频作曲家的分享方式略有改变,因此请务必查看您正在使用的版本的文档。