视图组件
视图组件就是在视图被渲染前,会调用的闭包或类方法。如果你想在每次渲染某些视图时绑定数据,视图组件可以把这样的程序逻辑组织在同一个地方。
对上面的话,理解如下:
- 这个php代码运行的时间是在渲染视图之前
- 使用这个组件应该用于每次渲染时,都要绑定数据的视图上。这样子就可以从控制器分离出数据绑定逻辑。
它很好的提现了 单一职责 ,对它的概念阐述 请看这里
使用
在laravel5的文档中已经说明了如何构建自己的视图组件。这里在重复一下。
- 先构建一个视图组件:
<?php
namespace App\Http\ViewComposers;
use Illuminate\Contracts\View\View;
class ProfileComposer {
public function compose(View $view) {
$view->withName('profile.test');
}
}
相信大家可以看出代码位于哪一个目录下了,我就不多说了。
- 打造自己的视图组件服务提供者
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use View;
class ComposerServiceProvider extends ServiceProvider {
/** * Bootstrap the application services. * * @return void */
public function boot() {
// 使用类来指定视图组件
View::composer('profile','App\Http\ViewComposers\ProfileComposer');
// 使用闭包来指定视图组件
/* View::composer('profile',function($view){ $view->with('name','laravel'); }); */
}
}
接下来,要记得把该服务提供者添加到 config/app.php
配置文件的 providers
数组中
- 构建视图页面
这里需要构建一个视图文件,文件的名称必须与注册时保持一致。这里我们的文件就该命名为:
profile.blade.php
。大家可以尝试在该文件中访问变量{{ $name }}
。
如果看到你设置的值,说明你成功了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。