diff --git a/src/Extend/ModelUrl.php b/src/Extend/ModelUrl.php index 6de14188b..9e990fe92 100644 --- a/src/Extend/ModelUrl.php +++ b/src/Extend/ModelUrl.php @@ -1,5 +1,11 @@ slugDrivers[$identifier] = $driver; return $this; @@ -60,14 +67,16 @@ class ModelUrl implements ExtenderInterface public function extend(Container $container, Extension $extension = null) { if ($this->urlGenerator) { - $container->extend('flarum.http.resourceUrlGenerators', function($existingUrlGenerators) use ($container) { + $container->extend('flarum.http.resourceUrlGenerators', function ($existingUrlGenerators) use ($container) { $existingUrlGenerators[$this->modelClass] = ContainerUtil::wrapCallback($this->urlGenerator, $container); + return $existingUrlGenerators; }); } if ($this->slugDrivers) { $container->extend('flarum.http.slugDrivers', function ($existingDrivers) { $existingDrivers[$this->modelClass] = array_merge(Arr::get($existingDrivers, $this->modelClass, []), $this->slugDrivers); + return $existingDrivers; }); } diff --git a/src/Http/HttpServiceProvider.php b/src/Http/HttpServiceProvider.php index 6d1d6eaf8..f871bde75 100644 --- a/src/Http/HttpServiceProvider.php +++ b/src/Http/HttpServiceProvider.php @@ -51,7 +51,7 @@ class HttpServiceProvider extends AbstractServiceProvider foreach ($this->app->make('flarum.http.slugDrivers') as $resourceClass => $resourceDrivers) { $driverClass = $resourceDrivers[$settings->get("slug_driver_$resourceClass", 'default')]; - echo "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; + echo 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'; echo "slug_driver_$resourceClass"; //echo $settings->get("slug_driver_$resourceClass", 'default'); $compiledDrivers[$resourceClass] = $this->app->make($driverClass); diff --git a/tests/integration/extenders/ModelUrlTest.php b/tests/integration/extenders/ModelUrlTest.php index 94df2018c..ce51751c2 100644 --- a/tests/integration/extenders/ModelUrlTest.php +++ b/tests/integration/extenders/ModelUrlTest.php @@ -1,5 +1,11 @@ prepareDatabase([ 'settings' => [ @@ -49,7 +56,8 @@ class ModelUrlTest extends TestCase /** * @test */ - public function default_url_generator_used_by_default() { + public function default_url_generator_used_by_default() + { $this->prepDb(); $urlGenerator = $this->app()->getContainer()->make(UrlGenerator::class); @@ -62,10 +70,11 @@ class ModelUrlTest extends TestCase /** * @test */ - public function custom_url_generator_can_be_used() { + public function custom_url_generator_can_be_used() + { $this->extend( - (new Extend\ModelUrl(User::class))->setUrlGenerator(function(UrlGenerator $urlGenerator, User $instance) { - return "hello there!"; + (new Extend\ModelUrl(User::class))->setUrlGenerator(function (UrlGenerator $urlGenerator, User $instance) { + return 'hello there!'; }) ); @@ -75,10 +84,11 @@ class ModelUrlTest extends TestCase $testUser = User::find(1); - $this->assertEquals("hello there!", $urlGenerator->toResource(User::class, $testUser)); + $this->assertEquals('hello there!', $urlGenerator->toResource(User::class, $testUser)); } - public function uses_default_driver_by_default() { + public function uses_default_driver_by_default() + { $this->prepDb(); $slugManager = $this->app()->getContainer()->make(SlugManager::class); @@ -92,7 +102,8 @@ class ModelUrlTest extends TestCase /** * @test */ - public function custom_slug_driver_doesnt_have_effect_unless_enabled() { + public function custom_slug_driver_doesnt_have_effect_unless_enabled() + { $this->extend((new Extend\ModelUrl(User::class))->addSlugDriver('testDriver', TestSlugDriver::class)); $this->prepDb(); @@ -108,7 +119,8 @@ class ModelUrlTest extends TestCase /** * @test */ - public function custom_slug_driver_has_effect_if_enabled() { + public function custom_slug_driver_has_effect_if_enabled() + { $this->extend((new Extend\ModelUrl(User::class))->addSlugDriver('testDriver', TestSlugDriver::class)); $this->prepDb(); @@ -123,8 +135,8 @@ class ModelUrlTest extends TestCase } } -class TestSlugDriver implements SlugDriverInterface { - +class TestSlugDriver implements SlugDriverInterface +{ public function toSlug(AbstractModel $instance): string { return 'test-slug';