diff --git a/src/Builder/SitemapIndexBuilder.php b/src/Builder/SitemapIndexBuilder.php index e5360a9..2343e1b 100644 --- a/src/Builder/SitemapIndexBuilder.php +++ b/src/Builder/SitemapIndexBuilder.php @@ -29,9 +29,13 @@ public function addProvider(UrlProviderInterface $provider): void $this->providers[] = $provider; } - public function addIndexProvider(IndexUrlProviderInterface $provider): void + public function addIndexProvider(IndexUrlProviderInterface $indexProvider): void { - $this->indexProviders[] = $provider; + foreach ($this->providers as $provider) { + $indexProvider->addProvider($provider); + } + + $this->indexProviders[] = $indexProvider; } public function build(): SitemapInterface @@ -40,10 +44,6 @@ public function build(): SitemapInterface $urls = []; foreach ($this->indexProviders as $indexProvider) { - foreach ($this->providers as $provider) { - $indexProvider->addProvider($provider); - } - $urls[] = $indexProvider->generate(); } diff --git a/src/Builder/SitemapIndexBuilderInterface.php b/src/Builder/SitemapIndexBuilderInterface.php index 5d091ba..22f6a70 100644 --- a/src/Builder/SitemapIndexBuilderInterface.php +++ b/src/Builder/SitemapIndexBuilderInterface.php @@ -9,7 +9,7 @@ interface SitemapIndexBuilderInterface extends BuilderInterface { - public function addIndexProvider(IndexUrlProviderInterface $provider): void; + public function addIndexProvider(IndexUrlProviderInterface $indexProvider): void; public function build(): SitemapInterface; } diff --git a/src/Provider/IndexUrlProvider.php b/src/Provider/IndexUrlProvider.php index 12dbb3b..d79970e 100644 --- a/src/Provider/IndexUrlProvider.php +++ b/src/Provider/IndexUrlProvider.php @@ -5,7 +5,6 @@ namespace SitemapPlugin\Provider; use SitemapPlugin\Factory\IndexUrlFactoryInterface; -use SitemapPlugin\Model\IndexUrlInterface; use Symfony\Component\Routing\RouterInterface; final class IndexUrlProvider implements IndexUrlProviderInterface @@ -17,9 +16,6 @@ final class IndexUrlProvider implements IndexUrlProviderInterface private IndexUrlFactoryInterface $sitemapIndexUrlFactory; - /** @var IndexUrlInterface[] */ - private array $urls = []; - public function __construct( RouterInterface $router, IndexUrlFactoryInterface $sitemapIndexUrlFactory @@ -35,12 +31,12 @@ public function addProvider(UrlProviderInterface $provider): void public function generate(): iterable { + $urls = []; foreach ($this->providers as $provider) { $location = $this->router->generate('sylius_sitemap_' . $provider->getName()); - - $this->urls[] = $this->sitemapIndexUrlFactory->createNew($location); + $urls[] = $this->sitemapIndexUrlFactory->createNew($location); } - return $this->urls; + return $urls; } } diff --git a/tests/Controller/MultiChannelSitemapIndexControllerApiTest.php b/tests/Controller/MultiChannelSitemapIndexControllerApiTest.php new file mode 100644 index 0000000..d784d30 --- /dev/null +++ b/tests/Controller/MultiChannelSitemapIndexControllerApiTest.php @@ -0,0 +1,22 @@ +loadFixturesFromFiles(['multi_channel.yaml']); + $this->generateSitemaps(); + + $response = $this->getBufferedResponse('http://localhost/sitemap_index.xml'); + $this->assertResponse($response, 'show_sitemap_index'); + + $response = $this->getBufferedResponse('http://store.fr/sitemap_index.xml'); + $this->assertResponse($response, 'show_second_sitemap_index'); + + $this->deleteSitemaps(); + } +} diff --git a/tests/Responses/show_second_sitemap_index.xml b/tests/Responses/show_second_sitemap_index.xml new file mode 100644 index 0000000..aabab77 --- /dev/null +++ b/tests/Responses/show_second_sitemap_index.xml @@ -0,0 +1,12 @@ + + + + http://store.fr/sitemap/products.xml + + + http://store.fr/sitemap/taxons.xml + + + http://store.fr/sitemap/static.xml + +