【问题标题】:Laravel 5.1 defer service provider until another is loadedLaravel 5.1 延迟服务提供者,直到加载另一个
【发布时间】:2016-04-06 08:02:41
【问题描述】:

我在 Laravel 5.1 中使用 FormBuilderHtmlServiceProvider 声明 HtmlForm 外观应该推迟加载,直到真正需要它们,这很好。

但是,我创建了一个FormServiceProvider,它注册了几个我将在我的视图中使用的宏。此提供程序不运行任何绑定,它只是在 FormBuilder 类中记录一些宏。

但是,通过在我自己的服务提供商上使用boot 方法存储这些宏,它会立即加载Form 绑定(使延迟加载毫无意义)。

问题

有什么方法可以将一个服务提供者中的boot 方法推迟到另一个服务提供者绑定门面?

或者,有没有办法监听特定的binding(或aliasing)事件,然后手动运行服务提供者?

【问题讨论】:

    标签: laravel laravel-5.1


    【解决方案1】:

    你可以听when container resolves object of any typewhen container resolves objects of type XXX如下,

    $this->app->resolving(function ($object, $app) {
        // Called when container resolves object of any type...
    });
    
    $this->app->resolving(FooBar::class, function (FooBar $fooBar, $app) {
        // Called when container resolves objects of type "FooBar"...
    });
    

    这里是DOC

    【讨论】:

    • 此方法不能延迟提供。只是观察解决类。
    【解决方案2】:

    你应该参考here

    您的服务提供商应提供Form:classHtml::class

    【讨论】:

      猜你喜欢
      • 2018-08-06
      • 2018-03-24
      • 2015-07-08
      • 1970-01-01
      • 1970-01-01
      • 2017-07-24
      • 2020-08-02
      • 2016-03-21
      • 1970-01-01
      相关资源
      最近更新 更多