Do not resolve services when extending them

Refs #1578.
This commit is contained in:
Franz Liedke 2018-12-13 01:57:31 +01:00
parent 833056dd68
commit 25c8ab0a35
4 changed files with 60 additions and 41 deletions

View File

@ -16,6 +16,7 @@ use Flarum\Frontend\Assets;
use Flarum\Frontend\Compiler\Source\SourceCollector; use Flarum\Frontend\Compiler\Source\SourceCollector;
use Flarum\Frontend\Frontend as ActualFrontend; use Flarum\Frontend\Frontend as ActualFrontend;
use Flarum\Frontend\RecompileFrontendAssets; use Flarum\Frontend\RecompileFrontendAssets;
use Flarum\Http\RouteCollection;
use Flarum\Http\RouteHandlerFactory; use Flarum\Http\RouteHandlerFactory;
use Illuminate\Contracts\Container\Container; use Illuminate\Contracts\Container\Container;
@ -122,16 +123,21 @@ class Frontend implements ExtenderInterface
return; return;
} }
$routes = $container->make("flarum.$this->frontend.routes"); $container->resolving(
"flarum.{$this->frontend}.routes",
function (RouteCollection $collection, Container $container) {
/** @var RouteHandlerFactory $factory */
$factory = $container->make(RouteHandlerFactory::class); $factory = $container->make(RouteHandlerFactory::class);
foreach ($this->routes as $route) { foreach ($this->routes as $route) {
$routes->get( $collection->get(
$route['path'], $route['name'], $route['path'], $route['name'],
$factory->toFrontend($this->frontend, $route['content']) $factory->toFrontend($this->frontend, $route['content'])
); );
} }
} }
);
}
private function registerContent(Container $container) private function registerContent(Container $container)
{ {

View File

@ -37,8 +37,16 @@ class LanguagePack implements ExtenderInterface, LifecycleInterface
); );
} }
/** @var LocaleManager $locales */ $container->resolving(
$locales = $container->make(LocaleManager::class); LocaleManager::class,
function (LocaleManager $locales) use ($extension, $locale, $title) {
$this->registerLocale($locales, $extension, $locale, $title);
}
);
}
private function registerLocale(LocaleManager $locales, Extension $extension, $locale, $title)
{
$locales->addLocale($locale, $title); $locales->addLocale($locale, $title);
$directory = $extension->getPath().'/locale'; $directory = $extension->getPath().'/locale';

View File

@ -27,9 +27,9 @@ class Locales implements ExtenderInterface, LifecycleInterface
public function extend(Container $container, Extension $extension = null) public function extend(Container $container, Extension $extension = null)
{ {
/** @var LocaleManager $locales */ $container->resolving(
$locales = $container->make(LocaleManager::class); LocaleManager::class,
function (LocaleManager $locales) {
foreach (new DirectoryIterator($this->directory) as $file) { foreach (new DirectoryIterator($this->directory) as $file) {
if (! $file->isFile()) { if (! $file->isFile()) {
continue; continue;
@ -46,14 +46,16 @@ class Locales implements ExtenderInterface, LifecycleInterface
); );
} }
} }
);
}
public function onEnable(Container $container, Extension $extension) public function onEnable(Container $container, Extension $extension)
{ {
$container->make('flarum.locales')->clearCache(); $container->make(LocaleManager::class)->clearCache();
} }
public function onDisable(Container $container, Extension $extension) public function onDisable(Container $container, Extension $extension)
{ {
$container->make('flarum.locales')->clearCache(); $container->make(LocaleManager::class)->clearCache();
} }
} }

View File

@ -12,6 +12,7 @@
namespace Flarum\Extend; namespace Flarum\Extend;
use Flarum\Extension\Extension; use Flarum\Extension\Extension;
use Flarum\Http\RouteCollection;
use Flarum\Http\RouteHandlerFactory; use Flarum\Http\RouteHandlerFactory;
use Illuminate\Contracts\Container\Container; use Illuminate\Contracts\Container\Container;
@ -69,9 +70,9 @@ class Routes implements ExtenderInterface
return; return;
} }
/** @var \Flarum\Http\RouteCollection $collection */ $container->resolving(
$collection = $container->make("flarum.{$this->appName}.routes"); "flarum.{$this->appName}.routes",
function (RouteCollection $collection, Container $container) {
/** @var RouteHandlerFactory $factory */ /** @var RouteHandlerFactory $factory */
$factory = $container->make(RouteHandlerFactory::class); $factory = $container->make(RouteHandlerFactory::class);
@ -84,4 +85,6 @@ class Routes implements ExtenderInterface
); );
} }
} }
);
}
} }