Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Symfony. Problem z routingiem.
Forum PHP.pl > Forum > Przedszkole
ino
Witam. Opiszę mój problem, nie będzie to profesjonalny opis ale mam nadzieję, że da się to zrozumieć.

Posiadam 2 strony internetowe oparte na 1 "źródle", w którym są połączenia z bazą danych, wszystkie controllery itd. Mój problem polega na tym, że chcąc zmienić coś w komponencie odpowiadającym za np. stronę startową to zmieni mi się wszystkim dwóch stronach. Chciałem to rozdzielić robiąc inną funkcję i podmieniając to w routingu.

Z : 'main' => array(array(), array('_controller' => Controller\\PagesController::index'), array(), array(array('text', '/')), array(), array()),
Na: 'main' => array(array(), array('_controller' => Controller\\PagesController::index2'), array(), array(array('text', '/')), array(), array()),

Teraz moje 1 pytanie: Gdzie powinien znajdować się ten routing bo wydaje mi się, że jest on w trochę dziwnym miejscu. (stronka>var>cache> srcdebugprojecturlgenerator.php)
2 pytanie: Czy mój pomysł jest dobry czy da się to lepiej zrobić?
3 pytanie: Czy ten routing powstał w jakiś automatyczny sposób? Symfony przerobił sobie inne pliki, z których powstał ten? Czy da się to ręcznie napisać dla każdej z podstron?

Wstawiam cały plik z tym routingiem, który znalazłem:

  1. <?php
  2.  
  3. use Symfony\Component\Routing\RequestContext;
  4. use Symfony\Component\Routing\Exception\RouteNotFoundException;
  5. use Psr\Log\LoggerInterface;
  6.  
  7. /**
  8.  * This class has been auto-generated
  9.  * by the Symfony Routing Component.
  10.  */
  11. class srcProdDebugProjectContainerUrlGenerator extends Symfony\Component\Routing\Generator\UrlGenerator
  12. {
  13. private static $declaredRoutes;
  14. private $defaultLocale;
  15.  
  16. public function __construct(RequestContext $context, LoggerInterface $logger = null, string $defaultLocale = null)
  17. {
  18. $this->context = $context;
  19. $this->logger = $logger;
  20. $this->defaultLocale = $defaultLocale;
  21. if (null === self::$declaredRoutes) {
  22. self::$declaredRoutes = array(
  23. 'main' => array(array(), array('_controller' => Controller\\PagesController::index'), array(), array(array('text', '/')), array(), array()),
  24.  
  25. itd dla róźnych podstron.


Z góry dzięki za pomoc.
Salvation
Jaka wersja Symfony to jest?
ino
Nie wiem czy dobrze sprawdzam ale wydaje mi się, że 4.1.1

  1. const VERSION = '4.1.1';


Pojawiło się jeszcze jedno pytanie. Mam bazy danych do każdej ze stron. Wszystkie funkcje pobierające potrzebne dane są zawarte w pliku DB.php. Oczywiście obie strony korzystają z tego samego pliku ale posiadają inne nazwy swojej bazy. Tutaj pytanie: Gdzie może znajdować się jakiś zapis określający, że np. stronka1 ma korzystać z pliku DB ale dla bazy o nazwie db_stronka1?
ohm
1. W cache sie tego nie zmienia, https://symfony.com/doc/current/routing.html - kwestia czy masz routing w yaml czy w controllerach, dostosuj sobie.
3. Tak, cache jest generowany z annotations czy yaml
Salvation
Na moje, to będzie lepiej jak napiszesz Bundle pod swój system, bo "luźne" pliki nie bardzi będą chciały współgrać z frameworkiem i tym co sobie zaplanowałeś by zrobić.

Wracając do Routingu. To w obiekcie Request masz informację skąd przychodzi rządanie. Jeżeli domenaA jest różna od domenyB, to tam to wyłapiesz. I możesz później wyświetlić inny widok w zależności od domeny właśnie.
ino
Dzięki za odpowiedzi. Spróbuję dodać coś w routingu i zobaczę co wyjdzie.
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.