Laravel Nova не загружает никакие ресурсы, ошибка лезвия - PullRequest
0 голосов
/ 11 декабря 2018

Нова работала на меня раньше.Я начал работать над интерфейсом, и когда возвращаюсь в Нову, он внезапно перестает работать.Я могу войти в систему, но затем он показывает анимацию загрузки для всех ресурсов и не загружает данные.

Я получаю эту ошибку:

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 Ответ

0 голосов
/ 11 декабря 2018

Ваш маршрут проблематичен, потому что:

Route::get('/{location_id}/{location_title}', 'LocationController@viewLocation');

собирается перехватить любой /foo/bar URL.

Если вы сделаете php artisan route:list | grep nova, вы увидитевсе маршруты Новы, и вы найдете группу в следующем формате:

  • /nova-api/metrics
  • /nova-api/cards
  • /nova-api/search
  • /nova-api/{resource}

и т. Д.и т. д. и т. п.

(Другими словами, куча маршрутов Nova отправляется на ваш LocationController вместо правильных контроллеров Nova.)

Вы можете исправить это с помощьювзяв вызов 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 маршрутам.

...