我在Laravel 5.1中使用FormBuilder
。 HtmlServiceProvider
表示Html
和Form
外观应该延迟加载,直到实际需要为止,这很好。
但是,我创建了一个FormServiceProvider
来注册我将在视图中使用的几个宏。此提供程序不运行任何绑定,它只是在FormBuilder
类中记录一些宏。
但是,通过在我自己的服务提供商上使用boot
方法存储这些宏,它会立即加载Form
绑定(使延迟加载无意义)。
问题
有没有办法在一个服务提供商中推迟boot
方法,直到另一个服务提供商绑定了外墙?
或者,有没有办法侦听特定的binding
(或aliasing
)事件,然后手动运行服务提供商?
答案 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:class
和Html::class
。