Laravel视图composer传递数据到视图

  • 全局共享变量

    public function boot()
    {
        view()->share('tasks',Task::all());
    }
    

使用view()->share(),最好放在服务提供者的boot()方法中如:App\Providers\AppServiceProvider

  • 基于闭包的视图composer
        view()->composer('home',function($view){
            $view->with('tasks',Task::all());
        });

以上代码使用闭包的方式,将变量传递给指定的单个视图home表示resources/views/home.blade.php,如果要传给多个视图,可以使用[文件夹路径.*],或者将composer方法的第一个参数与成数组[‘xx.header’,’xx.footer’]

  • 基于类的视图composer

    <?php namespace App\Http\ViewComposers;
    
    use App\Task; use Illuminate\Contracts\View\View;
    
    class TasksComposer { private $tasks;
    
        public function __construct(Task $tasks)
        {
            $this->tasks = $tasks;
        }
    
        public function compose(View $view){
            $view->with('tasks',$this->tasks->all());
        }
    
    
    }
    

创建视图composer类TasksComposer,在boot()方法中使用view()->composer(‘home’,TasksComposer::class);代码,给对应的视图传递变量;

0

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据