Расширение Laravel 5 Response Facade

У меня возникает проблема с пространством имен при попытке расширить фасад Response в Laraval 5. Я создал новое дерево папок под app каталог называется Extensions\Facades, В этой папке у меня есть файл с именем AjaxResponse.php который имеет следующее содержание:

<?php namespace App\Extensions\Facades;

use Illuminate\Support\Facades\Response;

class AjaxResponse extends Response{

public static function send($code,$body,$http_code=200){

parent::json( array(
'status'=>(string)$code,
'body' =>$body
) )->setStatusCode($http_code)->send();
exit();

}
}

Я регистрирую это как поставщик услуг в config/app.php как я понимаю, я должен:

providers=[
//..normal stuff
'App\Extensions\Facades\AjaxResponse',
]

И это вызывает обычную ошибку пространства имен для класса not found:

FatalErrorException in ProviderRepository.php line 150:
Class 'App\Extensions\Facades\AjaxResponse' not found

Кто-нибудь может пролить свет на то, почему класс не найден?

2

Решение

Зайдите в корневую папку проекта и в терминале наберите

composer dump-autoload

Все должно быть хорошо тогда. Когда вы создаете новую папку, композитор не знает об этом, поэтому он не может автоматически загружать из нее файлы, даже если они psr-4 Namespaced.

РЕДАКТИРОВАТЬ Также вам нужно объявить псевдоним для вашего фасада в config/app.php под массивом псевдонимов, а не провайдерами один:

 'AjaxResponse'   => 'App\Extensions\Facades\AjaxResponse',
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector