6

我只是在 Laravel 8 上迈出了第一步,发现了一个我无法解决的问题。

/var/www/html/laravel/resources/views/dashboard.blade.php

    <div class="py-12">
    <div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
        <div class="bg-white overflow-hidden shadow-xl sm:rounded-lg">
            <x-jet-welcome />
        </div>

如果我使用与上面相同的代码在同一目录(fe form.blade.php)中创建一个新刀片,但<x-jet-subform/>通常<x-jet-welcome>应该重定向到位于下的 subform.blade.phpvar/www/html/laravel/resources/views/vendor/jetstream/components/subform.blade.php

但是,如果我尝试访问该页面(在 web.php 设置路由之后),它会说

InvalidArgumentException
无法找到组件 [jet-subform] 的类或视图。

所以我认为有必要“注册”新刀片,但我发现没有办法这样做......

该视图已发布

php artisan vendor:publish --tag=jetstream-views
4

3 回答 3

11

App\Providers\JetstreamServiceProvider.php您可以在app\Providers文件夹中注册您的喷射流叶片组件。

将以下帮助函数添加到文件中:

protected function registerComponent(string $component) {
    \Illuminate\Support\Facades\Blade::component('jetstream::components.'.$component, 'jet-'.$component);
}

然后在 register 函数中使用以下代码段来注册您的 jetstream 叶片组件:

public function register() {
    $this->registerComponent('subform');
}

现在您可以使用您的自定义 jetstream 组件:

<x-jet-subform>
于 2021-01-22T17:12:41.243 回答
10

我在这里处理同样的问题,发现你的问题没有答案。我找到的解决方案是创建自己的新 Blade 组件。你可以这样做:

$ php artisan make:component MyComponent

这将创建两个新文件 /resources/views/components/my-component.blade.php 和 /app/View/Components/MyComponent.php。现在您只需要在该刀片文件上构建您的组件并使用 x-tag 引用它,如下所示: <x-my-component></x-my-component>

这就是刀片组件代码的样子

<button {{ $attributes->merge(['type' => 'button', 'class' => 'some-classes']) }}> {{ $slot }} </button>

希望能帮助到你。来自巴西的问候 :)

于 2020-11-26T16:57:11.313 回答
-3

我不确定在此处添加新的自定义 x-jet 组件是否是正确或预期的方法,因为此方法可能无法在更新后继续存在,但您可以在此文件中注册新组件:

vendor/laravel/jetstream/src/JetstreamServiceProvider.php.

在 configureComponents 方法中添加,$this->registerComponent('subform');然后用<x-jet-subform>标签调用它

于 2021-01-01T04:18:06.690 回答