Symfony2 – pobieranie routingu z katalogu bundle
2011/08/13 ; dodane przez lskowronskiWraz z rozwojem aplikacji chcielibyśmy, aby pliku konfiguracyjne routingu odpowiedzialne za dostęp do bundle były przechowywane we właściwym bundle. Aby to osiągnąć trzeba dokonać kilku prostych modyfikacji. Modyfikacji te analogicznie należy zastosować we wszystkich wykorzystywanych środowiskach.
Załóżmy, że chcemy wstępnie zastąpić plik routing.yml plikiem routing.php . Jak zrobić, aby Symfony zainteresowało się tym drugim?
Przechodzimy do konfiguracji app/config/config.yml i w sekcji framework zmieniamy
router: { resource: “%kernel.root_dir%/config/routing.yml” }
na
router: { resource: “%kernel.root_dir%/config/routing.php” }
Czyścimy cache i od teraz routing będzie pobierany z pliku routing.php .
Ale co wpisać w routing.php, aby pobierał on pliki yml z katalogów bundle? Oto przykładowy kod pliku:
use Symfony\Component\Routing\RouteCollection;
$collection = new RouteCollection();
$collection->addCollection($loader->import("@LmSecurityBundle/Resources/config/routing.yml"));
$collection->addCollection($loader->import("@LmUserBundle/Resources/config/routing.yml"));
return $collection;
Po zdefiniowaniu w ten sposób lokalizacji pliku yml będzie on pobierany i interpretowany. Dzięki czemu możemy jeszcze bardziej wykorzystać bundle jako niezależne paczki.
Należy pamiętać, aby w przypadku routing_dev.php poza lokalizacjami plików bundle dodać jeszcze :
$collection->addCollection($loader->import(”routing_dev.yml”));
Aby doczytywane były elementy typu pasek debug.

