这篇文章主要介绍Laravel如何设置视图合成器,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
Laravel提供的令人兴奋的功能之一就是视图扩展这个功能,在我看来,一个非常强大的视图扩展,允许开发将变量从全局精准的传递到模板。
<强>怎样使用视图(视图)扩展? 强>
首先你必须要知道两种不同类型的视图扩展,即基于类和闭包。
& lt; ? php 观点::作曲家(& # 39;概要# 39;,,function (视图),{ ,,,视图→美元与(& # 39;用户# 39;,,(& # 39;……& # 39;]); });//,或者 观点::作曲家(& # 39;概要# 39;,,& # 39;应用\ Http \ ViewComposers \ ProfileComposer& # 39;);
差别非常的明显,闭包容易使用,且不需要投入太多精力去设置,但他们会导致该服务提供者(服务提供者)日渐臃肿。
另一方面,基于类的视图扩展引导你直接将设计原则分离出来,另一个好处是,您可以测试隔离的这段代码,其他开发人员可以更轻松的维护现有代码。
在计算机科学中,关注点分离(SoC)是将计算机程序分解成尽可能少地在功能上重叠的不同特征的过程,关注点是程序中的任何有意思的地方或者焦点。通常,关注点与特征或行为是同义词,传统上通过模块化和封装在信息隐藏的帮助下实现SoC的进步。
<强>理解观点::作曲家方法的参数强>
在这个例子中,你可以看到的观点::作曲家方法有两个参数。
& lt; ? php 观点::作曲家(& # 39;概要# 39;,,function (视图),{ ,,,视图→美元与(& # 39;用户# 39;,,(& # 39;……& # 39;]); });//,或者 观点::作曲家(& # 39;概要# 39;,,& # 39;应用\ Http \ ViewComposers \ ProfileComposer& # 39;);
第一个参数是你想要监听的视图的名字,可以是一个字符串或者数组。意思是,如果这个模板视图被渲染了,你的视图管理器就会被触发,并且传递变量到视图。
你也可以使用通配符而不是手动选择所有的模板,你可以方便地使用星号(*),将数据附加到每一个视图,甚至是有很多个子目录的复杂模板。
使用场景通常是需要在每个视图中展示的侧边栏或者导航元素。
& lt; php ?//,为一个视图添加合成器:~/资源/视图/配置文件 观点::作曲家(& # 39;概要# 39;,,…);//,为多个视图添加:,~/资源/视图/配置文件,,~/资源/视图/profile_edit 以及~//视图/profile_settings资源 观点::作曲家([& # 39;概要# 39;,,& # 39;profile_edit& # 39;,, & # 39; profile_settings& # 39;],,…);//,目录通配符:,all files 拷贝~/*/资源/视图/页 观点::作曲家([& # 39;*页面。* & # 39;],,…),
第二个参数可以是闭包函数也可以是视图作曲家的类名。
两种方法都接收一个视图美元参数,通过这个参数很简单地就能用方法→用()来往视图中增加变量。
& lt; ? php 观点::作曲家(& # 39;* & # 39;,,function (视图),{ ,,,视图→美元与(& # 39;面包屑# 39;,,(& # 39;item 1 & # 39;,, & # 39; item & # 39;]); });//,或者, 观点::作曲家(& # 39;* & # 39;,,& # 39;应用\ Http \ ViewComposers \ NavigationComposer& # 39;);//,compose 方法也有,view 美元;参数, namespace 应用\ \ Http \视图作曲家; use 照亮\ \视图视图; class NavigationComposer { ,,,/* * ,,,,*,@param View 美元,视图 ,,,,*,@return 空白 ,,,*/,,,public function 组成(View $视图) ,,,{ ,,,,,,,视图→美元(& # 39;导航# 39;,,( ,,,,,,,,,,,& # 39;items1& # 39;,, & # 39; items2& # 39;,, & # 39; item3& # 39; ,,,,,,,); ,,,} }
<>强设置视图合成器强>
你可能知道Laravel会使用提供者做很多事情,你就能猜到接下来的是什么吗?是的,我们必须注册一个服务提供者,在提供者内,使用我们刚刚学习的视图合成器。
ViewComposerServiceProvider。php
Laravel如何设置视图合成器