简体   繁体   English

Laravel Package 开发:未找到外观别名

[英]Laravel Package development: Facade alias not found

I try to create an alias for a facade in a Laravel 7 package.我尝试为 Laravel 7 package 中的外观创建别名。

On testing I get the message:在测试时,我收到消息:

Error: Class 'MemberRequest' not found错误:未找到 Class 'MemberRequest'

Test:测试:

    /** @test */
    public function a_member_request_can_be_created()
    {
        $this->assertDatabaseMissing('member_requests', ['created_at' => Date::now()]);
        \MemberRequest::create(new CreateMemberRequestRequest(['email_address' => $this->email_address]));
        $this->assertDatabaseHas('member_requests', ['created_at' => Date::now()]);
    }

I did the following steps:我做了以下步骤:

  • create a facade (extending the facade class from Laravel Illuminate创建一个门面(从 Laravel 扩展门面 class
  • Register it in the service provider在服务提供者中注册
  • add the alias to the config file将别名添加到配置文件
  • add the alias to the composer.json file将别名添加到 composer.json 文件

Create a Facade:创建立面:

namespace martijn\UMS\Repositories\Facades;

use Illuminate\Support\Facades\Facade;

class MemberRequestRepositoryFacade extends Facade
{
    public static function getFacadeAccessor()
    {
        return 'MemberRequest';
    }
}

Register in serviceProvider:在 serviceProvider 中注册:

namespace martijn\UMS\Providers;


use Illuminate\Support\ServiceProvider;
use martijn\UMS\Repositories\MemberRequestRepository;

class UMSBaseServiceProvider extends ServiceProvider
{
public function register()
    {
        $this->registerFacades();
    }

    private function registerFacades()
    {
        // Facades
        $this->app->singleton('MemberRequest', function () {
            return new MemberRequestRepository();
        });
    }
}

Add it to a config file:将其添加到配置文件中:

return [


    /*
    |--------------------------------------------------------------------------
    | Class Aliases
    |--------------------------------------------------------------------------
    |
    | This array of class aliases will be registered when this application
    | is started. However, feel free to register as many as you wish as
    | the aliases are "lazy" loaded so they don't hinder performance.
    |
    */

    'aliases' => [
        'MemberRequest' => \martijn\UMS\Repositories\Facades\MemberRequestRepositoryFacade::class,
    ]
];

Add it to composer.json:将其添加到 composer.json:

      "aliases": {
        "MemberRequest": "martijn\\UMS\\Repositories\\Facades\\MemberRequestRepositoryFacade"
      }

In your ServiceProvider , try like this:在您的ServiceProvider中,尝试如下:

$this->app->singleton('MemberRequest', function () {
   return new MemberRequestRepository;
});

I found out that it is done in the boot loader of the service provider like this:我发现它是在服务提供商的引导加载程序中完成的,如下所示:

https://laracasts.com/discuss/channels/laravel/dynamic-class-aliases-in-package https://laracasts.com/discuss/channels/laravel/dynamic-class-aliases-in-package

In my example it was:在我的例子中是:

$loader = AliasLoader::getInstance();
$loader->alias('MemberRequest', \martijn\UMS\Repositories\Facades\MemberRequestRepositoryFacade::class);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Laravel 错误 - 未找到 Class 'Facade\Ignition\IgnitionServiceProvider' - Laravel Error - Class 'Facade\Ignition\IgnitionServiceProvider' not found package开发中如何使用Laravel/sanctum - How to use Laravel/sanctum in package development Laravel 6/7 测试:尚未设置外观根 - Laravel 6/7 testing: A facade root has not been set 未捕获的 RuntimeException:尚未设置外观根。 在 Facade.php:258 升级到 Laravel 时 - Uncaught RuntimeException: A facade root has not been set. in Facade.php:258 when upgrading to Laravel 7 Laravel 7 致命错误:未捕获的 RuntimeException:尚未设置外观根 - Laravel 7 Fatal error: Uncaught RuntimeException: A facade root has not been set laravelshoppingcart package 是否兼容 laravel 7? - Is the laravelshoppingcart package compatible with laravel 7? Laravel 7 多参数路由错误:Facade\Ignition\Exceptions\ViewException Missing required parameters for Route - Laravel 7 multi parameter route error: Facade\Ignition\Exceptions\ViewException Missing required parameters for Route Laravel:在此服务器上找不到资源 - Laravel: resource was not found on this server 授权 Laravel Package 中的通道 - Authorize Channel in Laravel Package 在 Laravel 7.0 上安装 Laravel 收银员包的问题 - issue installing Laravel cashier package on Laravel 7.0
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM