扩展Laravel 5响应门面

问题描述 投票:2回答:1

我在尝试扩展Laravel 5中的Response门面时遇到了命名空间问题。我在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',
]

这是抛出未找到的类的正常命名空间错误:

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

任何人都可以解释为什么没有找到课程?

php laravel fatal-error facade
1个回答
3
投票

转到项目根文件夹并在终端类型中

composer dump-autoload

一切都应该没问题。当您创建一个新文件夹时,编辑器不知道它,因此它无法自动加载文件,即使它们是psr-4命名空间。

编辑此外,您需要在别名数组下的config/app.php中为您的外观声明别名,而不是提供者:

 'AjaxResponse'   => 'App\Extensions\Facades\AjaxResponse',
© www.soinside.com 2019 - 2024. All rights reserved.