Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony]Automatyczne generowanie routerów i kontrolera
Forum PHP.pl > Forum > PHP > Frameworki
Szymciosek
Witam,
czy w Symfony2 jest możliwe wygenerowanie routerów na podstawie danych z bazy ?
Baza to: Contents, która ma w sobie między innymi kolumnę name np z zawartością "about", na tej podstawie chciałbym wygenerować
Kod
@Route("{lang}/about")

itd.

Następnym problemem jest wygenerowanie kontrolera z metodami do tych routerów.
Np teraz mam

  1. /**
  2.   * @Route("{lang}/about", requirements={"lang" = "(pl|en)"})
  3.   * @Template("MartaSiteBundle:Content:index.html.twig")
  4.   */
  5. public function aboutAction($lang)
  6. {
  7. $entityManager = $this->getDoctrine()->getEntityManager();
  8. $entities = $entityManager->getRepository("MartaSiteBundle:Contents")->findBy(array('name' => 'about'));
  9.  
  10. var_dump($entities[0]->getName());
  11.  
  12. return array('url_index' => '../' . $lang, 'url_about' => '../' . $lang . '/about');
  13. }


Czy to jest możliwe ?
Kolejną sprawą jest fakt, że każda metoda ma inne dane do pobrania, wyżej widać, że szukam name, ale równie dobrze to może być coś innego...
destroyerr
W bazie danych, czyli z założenia dynamiczne, chcesz przechowywać trasy do statycznych kontrolerów?
Generowanie tych tras w czasie działania aplikacji wydaje się być złym pomysłem, raczej powinieneś iść w kierunku dynamicznego routera, najlepiej w tym celu skorzystać/podejrzeć router z projektu Symfony CMF.
Szymciosek
Mógłbyś podać mi jakiś najprostszy przykład użycia takiego routingu ?

Próbuję to odpalić na podstawie http://symfony.com/doc/master/cmf/bundles/routing-extra.html

Ale otrzymuję błąd:
Kod
InvalidConfigurationException: Unrecognized options "route_repository_service_id" under "symfony_cmf_routing_extra.dynamic"


  1. symfony_cmf_routing_extra:
  2. dynamic:
  3. enabled: true
  4. generic_controller: symfony_cmf_content.controller:indexAction
  5. controllers_by_alias:
  6. editablestatic: sandbox_main.controller:indexAction
  7. controllers_by_class:
  8. Symfony\Cmf\Bundle\ContentBundle\Document\StaticContent: symfony_cmf_content.controller::indexAction
  9. templates_by_class:
  10. Symfony\Cmf\Bundle\ContentBundle\Document\StaticContent: SymfonyCmfContentBundle:StaticContent:index.html.twig
  11.  
  12. # the repository is responsible to load routes
  13. # for `PHPCR-ODM`_, we mainly use this because it can map from url to repository path
  14. # an orm repository might need different logic. look at cmf_routing.xml for an example if you
  15. # need to define your own service
  16. manager_registry: doctrine_phpcr
  17. manager_name: default
  18.  
  19. # if you use the default doctrine route repository service, you can use this to customize
  20. # the root path for the `PHPCR-ODM`_ RouteRepository
  21. # this base path will be injected by the Listener\IdPrefix - but only to routes
  22. # matching the prefix, to allow for more than one route source.
  23. routing_repositoryroot: /cms/routes
  24.  
  25. # If you want to replace the default route or content reposititories
  26. # you can specify their service IDs here.
  27. route_repository_service_id: martasitebundle.repository.endpoint
  28. content_repository_service_id: martasitebundle.repository.endpoint
destroyerr
To fajnie, że otrzymujesz błąd. Kilka sekund szukania i można znaleźć rozwiązanie tego problemu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.