在 laravel 中使用 view composer 将数据传递给 inertiajs

pass data to inertiajs with view composer in laravel

我正在使用 Laravel 8 和 Jetstream(惯性堆栈)。

我想使用视图组合器将数据传递到我的 Inertia 组件。

我该怎么做?

我什至尝试过这个但不起作用:

View::composer('*', ProfileComposer::class);

如果您想了解更多信息,请点击:

<?php

namespace App\Providers;

use App\Http\View\Composers\ProfileComposer;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;

class ViewServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
        View::composer('*', ProfileComposer::class);
    }
}

还有另一部分:

<?php

namespace App\Http\View\Composers;

use App\Models\Center;
use App\Models\Field;
use Illuminate\View\View;

class ProfileComposer
{
    /**
     * Bind data to the view.
     *
     * @param  \Illuminate\View\View  $view
     * @return void
     */
    public function compose(View $view)
    {
        $view->with('centers', Center::all('id', 'name'))
            ->with('fields', Field::all('id', 'name'));
    }
}

inertia 替换了 blade 视图,因此您应该直接将数据传递给 inertia。因此,例如,如果您想将数据共享给所有视图,您应该使用:Inertia::share(..)

参见:Inertia share