如何在 laravel 中制作全局标题

Posted

技术标签:

【中文标题】如何在 laravel 中制作全局标题【英文标题】:How to make a global header in laravel 【发布时间】:2015-03-11 21:01:28 【问题描述】:

我正在制作一个 laravel 网站。我想要一个在每个页面上都持久的动态标题(就像堆栈溢出如何在标题顶部有通知栏一样。它包含动态内容)。

有没有一种方法可以构建此动态标题内容并将其包含在每个刀片模板中,而无需从每个控制器内部构建它并将其传递给该控制器正在服务的视图?我有很多页面和控制器,如果我必须进入每个控制器方法以包含此代码来构建标题,然后将标题内容传递到视图中,这似乎并不正确。

我知道这样做的一种方法可能是在每个页面加载时简单地让 ajax 填充标题,但这似乎效率低下,因为我宁愿让侧边栏内容与页面同时提供加载页面,然后使用 ajax 获取标题内容。

我还想也许我可以从我自己的自定义 BaseController 类中调用一些东西,所有控制器都从该类扩展,但是,我仍然需要手动将一个变量传递给每个 View::make()。

【问题讨论】:

最好创建一个包含页眉(和页脚/菜单或每页上的任何其他内容)的模板。然后您的刀片页面扩展该模板以填充内容。为确保某些信息始终可用,请为其创建视图编辑器。你有没有想过做这样的事情? 我没有听说过视图作曲家。我现在正在阅读文档。似乎这可能是我正在寻找的:) 还有其他人在另一个问题上建议可能覆盖 setupLayout() ***.com/a/16470649/107459。但我将首先阅读 View Composers。谢谢! 是否有适用于所有视图的视图编辑器?这样我就不必在数组中指定它们了吗? 如果您创建页眉/页脚所在的基本模板,并且所有其他视图都会扩展它,那么您只需为基本模板创建一个作曲家。 完美 :) 谢谢! 【参考方案1】:

原来 View Composers 正是我想要的:http://laravel.com/docs/4.2/responses#view-composers

// define a variable that will always be present inside of your header partial View::composer('_partials.header', function($view) $view->with('count', User::count()); );

【讨论】:

以上是关于如何在 laravel 中制作全局标题的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.3:如何在全局中间件中使用 Check Auth?

如何在 Laravel 中制作迁移模型

Laravel 5.5:如何定义可在所有控制器中使用的全局变量?

如何在 Laravel 中制作简单的动态下拉列表?

如何在 laravel 5.1 中使用工匠制作视图

如何在 Laravel Query Builder 中使用全局作用域? (没有雄辩的模型)