Исключение создание нового ресурса в Laravel Nova-класс 'App\Post' не найден

Исключение создание нового ресурса в Laravel Nova-класс 'App\Post' не найден

21.11.2018 06:11:01 Просмотров 66 Источник

У меня есть совершенно новая установка Laravel Nova. Приборная панель работает нормально. Но когда я добавляю новый ресурс с помощью php artisan nova:resource Postи перезагружаю панель мониторинга, он выдает ошибку. Когда я удалить нарушителя модель из папки новая, приборная панель снова работает. Я точно следую пошаговым инструкциям из документов Nova. Я не могу этого понять.

Скриншот Screenshot

навигация.лезвие.РНР

@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

Я вижу, что Блейд вызывает @foreach($resources as $resource), где я предполагаю, что код терпит неудачу. Документы говорят::

"Автоматическая регистрация - по умолчанию все ресурсы в каталоге app/Nova будут автоматически зарегистрированы в Nova. Вы не обязаны вручную регистрировать их. Прежде чем ресурсы станут доступны на панели мониторинга Nova, их необходимо зарегистрировать в Nova. Ресурсы регистрируются в вашем приложении / поставщиках / NovaServiceProvider.PHP-файл. Этот файл содержит различные настройки и загрузочный код, связанные с вашей установкой Nova."

Но когда я смотрю на app/Providers/NovaServiceProvider.phpв списке нет ресурсов:

<?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 [];
    }
}

К сожалению, когда я вставляю предложенный код для ручной регистрации ресурсов, он все еще не работает.

<?php

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

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

    Nova::resources([
        User::class,
        Post::class,
    ]);
}
У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/53404755/exception-creating-new-resource-in-laravel-nova-class-app-post-not-found#comment93685162_53404755
можете ли вы опубликовать навигацию.лезвие.РНР?
https://stackoverflow.com/questions/53404755/exception-creating-new-resource-in-laravel-nova-class-app-post-not-found#comment93685215_53404755
Я только что нашел тебе возможное решение . Посмотрите здесь github.com/laravel/nova-issues/issues/55
https://stackoverflow.com/questions/53404755/exception-creating-new-resource-in-laravel-nova-class-app-post-not-found#comment93710761_53404755
Спасибо, Дорогие Волки. Я видел этот пост. К сожалению, это не помогло.
https://stackoverflow.com/questions/53404755/exception-creating-new-resource-in-laravel-nova-class-app-post-not-found#comment93710766_53404755
навигация.лезвие.php размещен выше
https://stackoverflow.com/questions/53404755/exception-creating-new-resource-in-laravel-nova-class-app-post-not-found#comment93715990_53404755
Вот в чем дело. Существует файл под названием User.php в каталоге приложений - не тот, который находится в каталоге App/Nova, где создается ресурс. Но на самом деле в каталоге приложений. При создании нового ресурса необходимо создать дубликат этого файла с именем вашего ресурса. Поэтому в моем случае скопируйте файл и создайте изображения.php в каталоге приложений. Это устраняет проблему. Artisan не создает этот файл автоматически.

Ответы - Исключение создание нового ресурса в Laravel Nova-класс 'App\Post' не найден / Exception Creating New Resource in Laravel Nova - Class 'App\Post' not found

Igor Sazonov

13.01.2019 10:19:16

Да, пропущенное приложение\создание и миграция модели Post с заголовком и телом

php artisan make:model Post -m

Также добавьте в миграцию сообщений, если вы из учебника LaraCasts

$table->char('title', 100);
$table->text('body');
himanshu jain

05.07.2019 10:11:23

Сначала создайте новую модель для post (mдля миграции)

php artisan make:model Post -m 

После того, как вы можете создать ресурс в папке app / nova

php artisan nova:resource Post
Oleksandr Devhackerone

16.11.2019 08:05:05

Да, пропущенное приложение\создание и миграция модели Post с заголовком и телом:

php artisan make:model Post -m

Также добавьте в миграцию сообщений, если вы из учебника LaraCasts:

    $table->char('title', 100);
    $table->text('body');

Выполните команду migrate Artisan:

php artisan migrate

После того, как вы можете создать ресурс в папке App / nova:

php artisan nova:resource Post
Закрыть X