视图合成器
- 生成自定义的 ProfileComposer ```php <?php namespace App\Http\View\Composers;
use Illuminate\View\View;
class ProfileComposer {
/**
* 将数据绑定到视图
* @param View $view
* @return void
*/
public function compose(View $view)
{
$view->with('count', 123);
}
}
- 生成自定义的 ViewServiceProvider
> 两种方式
> `使用闭包的方式,对指定视图生效,可以 * 作为通配符`
> `也可使用基类的合成器,指定模板`
```php
<?php
namespace App\Providers;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;
class ViewServiceProvider extends ServiceProvider
{
public function register()
{
//
}
public function boot(View $view)
{
// 直接使用视图合成器 针对所有视图文件
view()->share('sitename','Laravel学院');
//视图Composer
view()->composer('home/*',function($view){
$view->with('user',array('name'=>'test','avatar'=>'/path/to/test.jpg'));
});
// 针对特定文件 home/test1.blade.php
View::composer("home/test1","App\Http\View\Composers\ProfileComposer");
}
}
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
view/home/test1/blade.php <br/>
{{ dirname(__FILE__) }} <br/>
{{ __LINE__ }} 姓名:{{ $name }} <br/>
{{ __LINE__ }} 年龄:{{ $age }} <br/>
{{ __LINE__ }} 数量:{{ $count }} <br/>
{{ __LINE__ }} 课程名:{{ $sitename }} <br/>
{{ __LINE__ }} 用户姓名:{{ $user['name'] }} <br/>
{{ __LINE__ }} 用户头像:{{ $user['avatar'] }} <br/>
</body>
</html>