Laravel 5.1推迟服务提供商,直到另一个服务提供商加载

时间:2016-01-02 01:52:06

标签: laravel laravel-5.1

我在Laravel 5.1中使用FormBuilderHtmlServiceProvider表示HtmlForm外观应该延迟加载,直到实际需要为止,这很好。

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

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

问题

有没有办法在一个服务提供商中推迟boot方法,直到另一个服务提供商绑定了外墙?

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

2 个答案:

答案 0 :(得分:2)

您可以按以下方式收听 when container resolves object of any type when 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

答案 1 :(得分:0)

您应该参考here

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