使用Laravel5.4框架怎么实现一个视图共享数据功能

  介绍

这篇文章给大家介绍使用Laravel5.4框架怎么实现一个视图共享数据功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<强>在视图中共享数据

除了在单个视图中传递指定数据之外,有时候需要在所有视图中传入同一数据,即我们需要在不同视图中共享数据。要实现这一目的,需要使用视图工厂的分享方法。

全局帮助函数视图和响应类似,如果传入参数,则返回照亮\ \视图查看实例,不传入参数则返回照亮\视图\工厂实例,所以我们可以通过在服务提供者的引导方法中使用如下方式实现视图间共享数据:

& lt; php ?   namespace 应用\提供商;   use 阐明\ \ ServiceProvider的支持;   class  AppServiceProvider  extends  ServiceProvider   {   ,/* *   ,,*,Bootstrap  any  application 服务。   ,,*   ,,*,@return 空白   ,,*/public 才能;function 引导()   {才能   ,,,//视图间共享数据   ,,,视图()→分享(& # 39;名字# 39;& # 39;高伟& # 39;);   ,,}   ,/* *   ,,*,Register  any  application 服务。   ,,*   ,,*,@return 空白   ,,*/public 才能;function 注册()   {才能   ,,//,,}   }

接下来我直接用一个空的Laravel项目做演示,我们在路线文件首页(welcome.blade.php)视图:

路线::get (& # 39;/& # 39;,, function  (), {   return 才能视图(& # 39;欢迎# 39;);   });

然后在视图中输出视图共享数据:

& lt; ! DOCTYPE  html>   & lt; html>   & lt;才能head>   ,,,& lt; title> Laravel   ,,,& lt; style>   ,,,,,html, body  {   ,,,,,,,身高:,100%;   ,,,,,}   ,,,,,body  {   ,,,,,,,保证金:,0;   ,,,,,,,填充:,0;   ,,,,,,,宽度:,100%;   ,,,,,,,显示:,表;   ,,,,,,,粗细:,100;   ,,,,,,,字体类型:,& # 39;Lato& # 39;;   ,,,,,}   ,,,,,.container  {   ,,,,,,,text-align:,中心;   ,,,,,,,显示:,表格单元;   ,,,,,,,vertical-align:,中间;   ,,,,,}   ,,,,,.content  {   ,,,,,,,text-align:,中心;   ,,,,,,,显示:,inline-block;   ,,,,,}   ,,,,,.title  {   ,,,,,,,字体大小:,96 px;   ,,,,,}   ,,,& lt;/style>   & lt;才能/head>   & lt;才能body>   ,,,& lt; div 类=癱ontainer"比;   ,,,,,& lt; div 类=癱ontent"比;   ,,,,,,,& lt; div 类=皌itle"祝辞Laravel  5 & lt;/div>   ,,,,,,,& lt; h2>你好,{{$名称}}& lt;/h2>   ,,,,,& lt;/div>   ,,,& lt;/div>   & lt;才能/body>   & lt;/html>

<强>视图作曲家

上面的一种做法虽然可行,但是在别人下载项目后,共享数据是从数据库中获取的,执行数据迁移的时候会报的错。这时候我们就要用到视图作曲家,视图作曲家通过视图工厂的作曲家方法实现。该方法的第二个回调参数支持基于控制器动作和闭包函数两种方式。

<>强控制器的动作方式

首先要在服务提供者中注册视图作曲家,我们将会使用辅助函数的观点来访问照亮\合同\视图\工厂的底层实现,记住,Laravel不会包含默认的视图作曲家目录,我们可以按照自己的喜好组织其路径,例如可以创建一个App \ Http \ ViewComposers目录:

& lt; php ?   namespace 应用\ Http \ ViewComposers;   use 阐明合同\ \视图、视图;/* *   *,基于类的实现方式   */class  MottoComposer   {   ,/* *   ,,*,共享数据   ,,*,@date  2018-01-13   ,,*,@author 高伟   ,,*,@param  View ,,, View 美元;[描述]   ,,*,@return (类型),,,,,,(描述)   ,,*/public 才能;function 组成(View  $视图)   {才能   ,,,视图→美元与(& # 39;座右铭# 39;,,& # 39;嘎嘎嘎,我一直在努力! & # 39;);   ,,}   }

然后我们在AppServiceProvider中继续添加共享数据:

& lt; php ?   namespace 应用\提供商;   use 阐明\ \ ServiceProvider的支持;   class  AppServiceProvider  extends  ServiceProvider   {   ,/* *   ,,*,Bootstrap  any  application 服务。   ,,*   ,,*,@return 空白   ,,*/public 才能;function 引导()   {才能   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

使用Laravel5.4框架怎么实现一个视图共享数据功能