Make site extenders run after extensions

Fixes #1708.
This commit is contained in:
Franz Liedke 2018-12-19 21:30:29 +01:00
parent 209d13affd
commit ba594de13a
No known key found for this signature in database
GPG Key ID: 9A0231A879B055F4
2 changed files with 10 additions and 4 deletions

View File

@ -27,7 +27,7 @@ class ExtensionServiceProvider extends AbstractServiceProvider
// Boot extensions when the app is booting. This must be done as a boot
// listener on the app rather than in the service provider's boot method
// below, so that extensions have a chance to register things on the
// container before the core boot code runs.
// container before the core boots up (and starts resolving services).
$this->app->booting(function (Container $app) {
$app->make('flarum.extensions')->extend($app);
});

View File

@ -36,6 +36,7 @@ use Illuminate\Cache\Repository as CacheRepository;
use Illuminate\Config\Repository as ConfigRepository;
use Illuminate\Contracts\Cache\Repository;
use Illuminate\Contracts\Cache\Store;
use Illuminate\Contracts\Container\Container;
use Illuminate\Filesystem\Filesystem;
use Illuminate\Filesystem\FilesystemServiceProvider;
use Illuminate\Hashing\HashServiceProvider;
@ -146,9 +147,14 @@ class InstalledSite implements SiteInterface
$laravel->register(ExtensionServiceProvider::class);
foreach ($this->extenders as $extension) {
$extension->extend($laravel);
}
$laravel->booting(function (Container $app) {
// Run all local-site extenders before booting service providers
// (but after those from "real" extensions, which have been set up
// in a service provider above).
foreach ($this->extenders as $extension) {
$extension->extend($app);
}
});
$laravel->boot();