在 laravel 中使用视图作曲家将数据传递给惯性js

Posted

技术标签:

【中文标题】在 laravel 中使用视图作曲家将数据传递给惯性js【英文标题】:pass data to inertiajs with view composer in laravel 【发布时间】:2021-05-21 08:41:00 【问题描述】:

我正在使用 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'));
    


【问题讨论】:

【参考方案1】:

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

见:Inertia share

【讨论】:

我只想将我的数据传递给user/profile 路由。我不想在不需要时将我的数据传递给所有路由并查询我的数据库。 你可以在路由/控制器中返回inertia('component', ['data' =&gt; data::All()])就像view()一样 我使用的是jetstream,有些routescontrollers 无法编辑。因为它在vendor 目录中,无法发布。

以上是关于在 laravel 中使用视图作曲家将数据传递给惯性js的主要内容,如果未能解决你的问题,请参考以下文章

将数据传递给 laravel 中的引导模式

将数据传递给 Laravel 中 vue.js 中的另一个组件

UIPickerView 将数据传递给容器视图

通过 AJAX 将数据传递给 Laravel 控制器

使用 performSegue 将数据传递给目标视图控制器

在使用 Laravel 和 Vue 时,通过 Blade Views 将数据传递给 Vue 与使用 Axios 直接传递给 Vue Components 的优缺点是啥? [关闭]