Где-то звонит getContent()
на виде. Проблема в том, что ... Представления не имеют указанного метода, который существует в классе Response, поскольку он расширяется от Symfony Http-Foundation Response Class , который определяет защищенный $content
свойство, представляющее собой строку с содержимым ответа.
Класс View в Laravel имеет метод getContents
, но если вы не вызываете getContent
в вашем коде бессмысленно искать опечатку.
Поток, предшествующий ошибке:
Где-то метод getContents()
вызывается в представлении, напрямую или через Фасад.
Поскольку у вида нет такого метода, метод волхвов c _call
обрабатывает его . По состоянию на Laravel 5.5 было:
/**
* Dynamically bind parameters to the view.
*
* @param string $method
* @param array $parameters
* @return \Illuminate\View\View
*
* @throws \BadMethodCallException
*/
public function __call($method, $parameters)
{
if (! Str::startsWith($method, 'with')) {
throw new BadMethodCallException("Method [$method] does not exist on view.");
}
return $this->with(Str::camel(substr($method, 4)), $parameters[0]);
}
(в Laravel 6.x он также проверяет макрос с неопределенным вызванным методом)
Этот код означает, что если вы позвоните, например,
return view('userList')->withAvatarList([$avatar1, $avatar2]);
Так как этот метод не существует, он переадресует _call как _call('withAvatarList',[ [$avatar1, $avatar2 ] ]);
- , если метод не начинается с с (например,
getAvatarList
), который он выбрасывает.
, поскольку он действительно начинается с с , тогда он установит параметр в представлении (потому что это контейнер и может содержать произвольные данные)
- извлечь часть, которая следует после
with
(withAvatarList
становится AvatarList
) - использовать Str фасад для форматирования его как camelCase, (
AvatarList
becodes avatarList
) - Устанавливает параметр
avatarList
в представлении в качестве аргумента, вызвавшего метод
Итак, в конце концов, вы назвали
return view('userlist')->with('avatarList',[...]);
Как было сказано выше, метод, начинающийся с get
, будет выбрасывать.
Редактировать * 10 73 *
Моим лучшим предположением была опечатка в вашем коде или маловероятная ошибка в кеше. Вы сказали, что это из-за режима обслуживания. Однако php artisan down
не вызывает ошибку. Он возвращает заголовок 503 и простое сообщение.
Я считаю, что режим обслуживания перекрывается с другим обстоятельством.