使用视图
全局数据: 如果要在多个视图中使用通用数据,可以使用自定义数据服务提供者
<?php
namespace App\Providers;
use Illuminate\Support\Facades\View;
class AppServiceProvider extends ServiceProvider {
public function register(){}
public function boot(){
View::share('key', 'value');
}
}
基本使用
<?php
return view('dir.viewname', ['data' => $data]);
使用视图合成
视图合成将常用的视图或数据模块单独提取出来,以在多处实现复用
- 编写视图合成器
<?php
namespace App\View\Composers;
use App\Repositories\UserRepository;
use Illuminate\View\View;
class ProfileComposer {
//用户模型
protected $users;
public function __construct(UserRepository $users)
{
$this->users = $users;
}
//该方法在渲染时调用
public function compose(View $view)
{
$view->with('count', $this->users->count());
}
}
- 注册视图合成器: 在 /App/Providers/ViewServiceProvider 的 boot 方法中,加入:
<?php
View::composer('profile', ProfileComposer::class);
View::composer('dashboard', function ($view) {}); //也可以用闭包方式
- 在视图中使用
<?php
View::composer(
['profile', 'dashboard'],
MultiComposer::class
);
视图内容提供器
php artisan make::provider ViewServiceProvider