首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Laravel中创建新资源的异常-未找到类“App\Post”

在Laravel中创建新资源的异常-未找到类“App\Post”
EN

Stack Overflow用户
提问于 2018-11-21 03:11:01
回答 4查看 4.1K关注 0票数 3

我有一个全新的装置拉拉维尔诺瓦。仪表盘没问题。但是当我使用php artisan nova:resource Post添加一个新资源并重新加载仪表板时,它会抛出一个错误。当我从Nova文件夹中移除违规模型时,仪表板再次工作。我完全按照Nova博士的指示一步一步地走。我搞不懂。

截图

navigation.blade.php

代码语言:javascript
运行
复制
@if (count(Nova::availableResources(request())))
    <h3 class="flex items-center font-normal text-white mb-6 text-base no-underline">
        <svg class="sidebar-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
            <path fill="var(--sidebar-icon)" d="M3 1h4c1.1045695 0 2 .8954305 2 2v4c0 1.1045695-.8954305 2-2 2H3c-1.1045695 0-2-.8954305-2-2V3c0-1.1045695.8954305-2 2-2zm0 2v4h4V3H3zm10-2h4c1.1045695 0 2 .8954305 2 2v4c0 1.1045695-.8954305 2-2 2h-4c-1.1045695 0-2-.8954305-2-2V3c0-1.1045695.8954305-2 2-2zm0 2v4h4V3h-4zM3 11h4c1.1045695 0 2 .8954305 2 2v4c0 1.1045695-.8954305 2-2 2H3c-1.1045695 0-2-.8954305-2-2v-4c0-1.1045695.8954305-2 2-2zm0 2v4h4v-4H3zm10-2h4c1.1045695 0 2 .8954305 2 2v4c0 1.1045695-.8954305 2-2 2h-4c-1.1045695 0-2-.8954305-2-2v-4c0-1.1045695.8954305-2 2-2zm0 2v4h4v-4h-4z"
            />
        </svg>
        <span class="sidebar-label">{{ __('Resources') }}</span>
    </h3>

    @foreach(Nova::groupedResources(request()) as $group => $resources)
        @if (count($resources) > 0)
            @if (count(Nova::groups(request())) > 1)
                <h4 class="ml-8 mb-4 text-xs text-white-50% uppercase tracking-wide">{{ $group }}</h4>
            @endif

            <ul class="list-reset mb-8">
                @foreach($resources as $resource)
                    @if (! $resource::$displayInNavigation)
                        @continue
                    @endif

                    <li class="leading-tight mb-4 ml-8 text-sm">
                        <router-link :to="{
                            name: 'index',
                            params: {
                                resourceName: '{{ $resource::uriKey() }}'
                            }
                        }" class="text-white text-justify no-underline dim">
                            {{ $resource::label() }}
                        </router-link>
                    </li>
                @endforeach
            </ul>
        @endif
    @endforeach
@endif

我看到Blade正在调用@foreach($resources as $resource),这就是我认为代码失败的地方。医生说:

“自动注册--默认情况下,app/Nova目录中的所有资源都将自动在Nova注册。您不需要手动注册它们。在Nova仪表板中可用资源之前,必须向Nova注册资源。资源将在应用程序/提供者/NovaServiceProvider.php文件中注册。该文件包含与Nova安装相关的各种配置和引导代码。”

但是,当我查看app/Providers/NovaServiceProvider.php时,没有列出任何资源:

代码语言:javascript
运行
复制
<?php
namespace App\Providers;

use Laravel\Nova\Nova;
use Laravel\Nova\Cards\Help;
use Illuminate\Support\Facades\Gate;
use Laravel\Nova\NovaApplicationServiceProvider;

class NovaServiceProvider extends NovaApplicationServiceProvider
{
    public function boot()
    {
        parent::boot();
    }

    protected function gate()
    {
        Gate::define('viewNova', function ($user) {
            return in_array($user->email, [
                //
            ]);
        });
    }

    protected function cards()
    {
        return [
            new Help,
        ];
    }

    public function tools()
    {
        return [];
    }
}

不幸的是,当我粘贴用于手动注册资源的建议代码时,它仍然无法工作。

代码语言:javascript
运行
复制
<?php

use App\Nova\User;
use App\Nova\Post;

protected function resources()
{
    Nova::resourcesIn(app_path('Nova'));

    Nova::resources([
        User::class,
        Post::class,
    ]);
}
EN

回答 4

Stack Overflow用户

发布于 2019-11-16 17:05:05

是的,错过了App\Post模型的创建和带有标题和正文的迁移:

代码语言:javascript
运行
复制
php artisan make:model Post -m

如果您来自LaraCasts教程,也可以添加到posts迁移中:

代码语言:javascript
运行
复制
    $table->char('title', 100);
    $table->text('body');

执行命令:

代码语言:javascript
运行
复制
php artisan migrate

在您可以在App/nova文件夹中创建资源之后:

代码语言:javascript
运行
复制
php artisan nova:resource Post
票数 4
EN

Stack Overflow用户

发布于 2019-01-13 19:19:16

是的,错过了App\Post模型的创建和带有标题和正文的迁移

代码语言:javascript
运行
复制
php artisan make:model Post -m

如果您来自LaraCasts教程,也可以添加到posts迁移中

代码语言:javascript
运行
复制
$table->char('title', 100);
$table->text('body');
票数 3
EN

Stack Overflow用户

发布于 2019-07-05 07:11:23

首先创建新的post模型(用于迁移的m)

代码语言:javascript
运行
复制
php artisan make:model Post -m 

在您可以在app/nova文件夹中创建资源之后

代码语言:javascript
运行
复制
php artisan nova:resource Post
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53404755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档