mam pewien problem z przeciążaniem konfiguracji w Symfony2.
Mam dwa Bundle: AcmeWebsiteBudnle oraz AcmeAdminBundle. Wykorzystuje zewnętrzną paczkę do paginacji wyników, która pozwala na zdefiniowanie ścieżki do templatki paginatora. Dla Website i Admin Bundle chcę ustawić inny parametr tj:
Acme/AdminBundle/Resources/config/config.yml
Kod
knp_paginator:
template:
pagination: AcmeAdminBundle:Pagination:twitter_bootstrap.html.twig
twig:
form:
resources:
- 'AcmeAdminBundle:Form:fields.html.twig'
template:
pagination: AcmeAdminBundle:Pagination:twitter_bootstrap.html.twig
twig:
form:
resources:
- 'AcmeAdminBundle:Form:fields.html.twig'
Acme/WebsiteBundle/Resources/config/config.yml
Kod
knp_paginator:
template:
pagination: AcmeWebsiteBundle:Pagination:cc_pagination.html.twig
template:
pagination: AcmeWebsiteBundle:Pagination:cc_pagination.html.twig
oba te pliki importuje w:
app/config/config.yml
Kod
imports:
- { resource: parameters.ini }
- { resource: security.yml }
- { resource: doctrine_extensions.yml }
- { resource: @AcmeWebsiteBundle/Resources/config/config.yml }
- { resource: @AcmeAdminBundle/Resources/config/config.yml }
- { resource: parameters.ini }
- { resource: security.yml }
- { resource: doctrine_extensions.yml }
- { resource: @AcmeWebsiteBundle/Resources/config/config.yml }
- { resource: @AcmeAdminBundle/Resources/config/config.yml }
Oba się ładują dla każdej paczki (tj. AcmeWebsiteBundle oraz AcmeAdminBundle) i przez to konfiguracja dla Website jest przeciążana konfiguracją Admin....
Aby rozwiązać ten problem wpadłem na pomysł aby usunąć wpis w:
app/config/config.yml
Kod
imports:
- { resource: parameters.ini }
- { resource: security.yml }
- { resource: doctrine_extensions.yml }
- { resource: @AcmeWebsiteBundle/Resources/config/config.yml }
- { resource: parameters.ini }
- { resource: security.yml }
- { resource: doctrine_extensions.yml }
- { resource: @AcmeWebsiteBundle/Resources/config/config.yml }
i konfigurację dla AcmeAdminBundle załadować w:
Acme/AdminBundle/DependencyInjection/AcmeAdminExtension.php:
{ $configuration = new Configuration(); $config = $this->processConfiguration($configuration, $configs); $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); $loader->load('services.yml'); $loader->load('config.yml'); }
ale powoduje to wyrzucenie wyjątku InvalidArgimentException:
Kod
InvalidArgumentException: There is no extension able to load the configuration for "twig" (in [...]\src\Acme\AdminBundle\DependencyInjection/../Resources/config\config.yml). Looked for namespace "twig", found none
No i nie wiem dlaczego nie widzi mi tej przestrzeni nazw twig... Wydaje mi się, że problem leży w kolejności ładowania plików konfiguracyjnych i przed twig ładowany zostaje mój config, ale nie jestem pewien.
Czy dobrze kombinuje aby ładować plik konfiguracyjny AcmeAdminBundle tylko gdy ta paczka jest uruchamiana i nie uwzględniać tego pliku w paczce AcmeWebsiteBundle? Może macie jakąś podpowiedź co robię źle...?
Z góry bardzo dziękuję za pomoc!
Pozdrawiam,
Maciek