视图

收藏507

阅读118018

更新时间2022-04-15

前言:

视图

视图

创建视图

{tip} 如果你想找到有关如何编写 Blade 模板的更多信息? 从查看完整的 Blade 文档 入手。

视图包含应用程序的 HTML,并且将控制器 / 应用程序逻辑与演示逻辑分开。视图文件存放于 resources/views 目录下。一个简单的视图如下所示:



  
    

Hello, {{ $name }}

       

该视图文件位于 resources/views/greeting.blade.php,可以使用全局辅助函数 view 来返回:

Route::get('/', function () { 
   return view('greeting', ['name' => 'James']);
});

如您所见,传递给 view 帮助器的第一个参数对应于 resources/views 目录中视图文件的名称。 第二个参数是应该可供视图使用的数据数组。 在这种情况下,我们传递 name 变量,该变量使用 Blade syntax 显示在视图中。

当然,视图文件也可以嵌套在 resources/views 目录的子目录中。「点」符号可以用来引用嵌套视图。例如,如果你的视图存储在 resources/views/admin/profile.blade.php,则可以这样引用它:

return view('admin.profile', $data);

判断视图文件是否存在

如果需要判断视图文件是否存在,可以使用 View facade. 如果视图文件存在,exists 方法会返回  true

use Illuminate\Support\Facades\View;if (View::exists('emails.customer')) { 
   //
}

创建第一个可用视图

使用 first 方法,你可以创建存在于给定数组视图中的第一个视图。 如果你的应用程序或开发的第三方包允许定制或覆盖视图,这非常有用:

return view()->first(['custom.admin', 'admin'], $data);

当然,你也可以通过 View facade 调用这个方法:

use Illuminate\Support\Facades\View;return View::first(['custom.admin', 'admin'], $data);

向视图传递参数

正如您在前面的示例中所看到的,您可以将一组数据传递给视图:

return view('greetings', ['name' => 'Victoria']);

以这种方式传递信息时,数据应该是具有键 / 值对的数组。 在视图中,您可以使用相应的键访问每个值,例如 。 作为将完整的数据数组传递给 view 辅助函数的替代方法,您可以使用 with 方法将各个数据片段添加到视图中:

return view('greeting')->with('name', 'Victoria');

与所有视图共享数据

如果需要共享一段数据给应用程序的所有视图,你可以在服务提供器的 boot 方法中调用视图 Facade 的 share 方法。例如,可以将它们添加到 AppServiceProvider 或者为它们生成一个单独的服务提供器:

视图合成器

视图合成器是在呈现视图时调用的回调或类方法。 如果每次呈现视图时都希望将数据绑定到视图,则视图合成器可以帮助您将该逻辑组织到一个位置。

在下面这个例子中,我们会在一个 服务提供商 中注册视图合成器。 使用 View facade 来访问底层的 Illuminate\Contracts\View\Factory 契约实现。默认情况下,Laravel 没有存放视图合成器的目录,你需要根据需求来重新建立目录,例如: app/Http/View/Composers :

{note} 注意,如果你创建了新的一个服务提供器来存放你注册视图合成器的代码,那么你需要将这个服务提供器添加到配置文件 config/app.phpproviders 数组中。

到此我们已经注册了视图合成器,每次渲染 profile 视图时都会执行 ProfileComposer@compose 方法。那么下面我们来定义视图合成器的这个类吧:

users = $users;    }    
    /**
     * Bind data to the view.
     *
     * @param  View  $view
     * @return void
     */ 
     public function compose(View $view)   
      {     
         $view->with('count', $this->users->count());   
       }
    }

视图合成器的 compose 方法会在视图渲染之前被调用,并传入一个 Illuminate\View\View 实例。你可以使用 with 方法将数据绑定到视图。

{tip} 所有的视图合成器都会通过 服务容器 ,  进行解析,所以你可以在视图合成器的构造函数中类型提示需要注入的依赖项。

将视图合成器添加到多个视图

通过将一组视图作为第一个参数传入 composer 方法,将一个视图合成器添加到多个视图:

View::composer( 
   ['profile', 'dashboard'],    
   'App\Http\View\Composers\MyViewComposer'
  );

composer 方法同时也接受通配符 * ,表示将一个视图合成器添加到所有视图:

View::composer('*', function ($view) {  
   //
});

视图构造器

视图 creators 和视图合成器非常相似。唯一不同之处在于:视图构造器在视图实例化之后立即执行,而视图合成器在视图即将渲染时执行。使用 creator 方法注册视图构造器:

View::creator('profile', 'App\Http\View\Creators\ProfileCreator');
本文章首发在 LearnKu.com 网站上。

精选课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

61.7万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

39.3万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

70.9万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

61.6万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

23万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

33.9万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

125万人学习

关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号