Laravel Nova не загружает никакие ресурсы, ошибка лезвия
Нова работала на меня раньше. Я начал работать над интерфейсом, и когда возвращаюсь в Нову, он внезапно перестает работать. Я могу войти, но затем он показывает загрузочную анимацию для всех ресурсов и не загружает данные.
Я получаю эту ошибку:
Trying to get property of non-object (View: longpath/location.blade.php)
В location.blade.php
@extends('app')
@section('title')
{{ $location->title }}
@endsection
@section('content')
@endsection
Странно то, что в front-end location.blade.php загружается отлично, когда я передаю $location
переменная в LocationController
, Нет ошибок и ничего в журнале ошибок. В LocationController
:
$location = Location::
where('id', $this->location_id)
->first();
return view('location', [
'location' => $location
]);
Так что это показывает ошибку, и эта ошибка также в журналах. Если я закомментирую {{ $location->title }}
больше не выдает ошибку, но все равно не загружает никаких данных, и ничего не отображается в журнале ошибок. Так что я понятия не имею, почему он не загружает какие-либо данные. Для меня также загадка, почему (внешний интерфейс) шаблон Blade будет генерировать ошибку в Nova, в то время как он отлично работает на внешнем интерфейсе.
Обновить:
Если я закомментирую этот конкретный маршрут в маршрутах / сети, Nova снова будет работать. Не уверен, почему этот маршрут влияет на Нову?
Route::get('/{location_id}/{location_title}', 'LocationController@viewLocation');
Если я добавлю маршрут обратно, в моей консоли я получу:
TypeError: Cannot read property 'length' of undefined
1 ответ
Ваш маршрут проблематичен, потому что:
Route::get('/{location_id}/{location_title}', 'LocationController@viewLocation');
собирается поймать любого /foo/bar
URL.
Если вы делаете php artisan route:list | grep nova
вы увидите все маршруты Nova и найдете группу в следующем формате:
/nova-api/metrics
/nova-api/cards
/nova-api/search
/nova-api/{resource}
и тд и тп
(Другими словами, куча маршрутов Nova отправляются на ваш LocationController
вместо правильных нова контроллеров.)
Вы можете исправить это, взяв Nova::routes
вызвать из app/Providers/NovaServiceProvider.php
файл и положить его в ваши файлы маршрутов напрямую, но более чистое решение, скорее всего, настроить ваш маршрут, чтобы быть что-то вроде /locations/{location_id}/{location_title}
это не собирается конфликтовать. Маршрутные маршруты верхнего уровня имеют тенденцию вызывать подобные проблемы.
Вы также можете сделать это:
Route::get('/{location_id}/{location_title}', 'LocationController@viewLocation')
->where('location_id', '[0-9]+');
Это сделает ваш маршрут активированным только для числовых идентификаторов, что означает, что он не будет мешать нечисловым nova-api
маршруты.