Множество проблем с загрузкой файлов в реальном времени

#laravel #laravel-livewire

#laravel #laravel-livewire

Вопрос:

В чем, по-видимому, проблема:

при каждой загрузке регистрируется 6 исключений (хотя файл загружается)

Шаги для воспроизведения:

  1. Перейдите на страницу документации, чтобы создать простую загрузку файлов
  2. Попробуйте загрузить файл
  3. Проверьте файл журнала laravel

Версия Laravel: 5.7

Версия Livewire: 1.3.5

Пример журнала Laravel:

 [2021-01-21 11:05:07] local.ERROR:  {"userId":47,"email":"user@example.com","exception":"[object] (Exception(code: 0):  at /home/ameer/public_html/livewire.local/vendor/livewire/livewire/src/ComponentConcerns/HandlesActions.php:114)
[stacktrace]
#0 /home/ameer/public_html/livewire.local/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(755): Livewire\Component->Livewire\ComponentConcerns\{closure}()
#1 /home/ameer/public_html/livewire.local/vendor/livewire/livewire/src/ComponentConcerns/HandlesActions.php(121): rescue(Object(Closure), Object(Closure), false)
#2 [internal function]: Livewire\Component->Livewire\ComponentConcerns\{closure}(Object(ReflectionParameter), 0)
#3 /home/ameer/public_html/livewire.local/vendor/laravel/framework/src/Illuminate/Support/Collection.php(1034): array_map(Object(Closure), Array, Array)
#4 /home/ameer/public_html/livewire.local/vendor/livewire/livewire/src/ComponentConcerns/HandlesActions.php(122): Illuminate\Support\Collection->map(Object(Closure))
#5 /home/ameer/public_html/livewire.local/vendor/livewire/livewire/src/ComponentConcerns/HandlesActions.php(99): Livewire\Component->resolveActionParameters('startUpload', Array)
#6 /home/ameer/public_html/livewire.local/vendor/livewire/livewire/src/Connection/ConnectionHandler.php(46): Livewire\Component->callMethod('startUpload', Array)
...
 

Ответ №1:

После некоторой отладки я обнаружил, что исключение вызвано строкой # 111 в vendor/livewire/livewire/src/ComponentConcerns/HandlesActions.php

Я смог обойти проблему, переопределив resolveActionParameters метод из файла компонента livewire.

Изменен метод, чтобы просто возвращать коллекцию $params

 protected function resolveActionParameters($method, $params)
{
    return collect($params);
}
 

До сих пор это предотвращало чрезмерное протоколирование исключений и не нарушало никаких функций livewire.