Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony] "Czysty" sposób na zainicjalizowanie kompilacji generator.yml, ...wewnątrz akcji
LBO
post
Post #1





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Często w swoich modułach admina tworzę object_actions, które ustawiają filtry (FilterForms) w innych modułach. Podam przykład:
  1. /*
  2.   * Browse list of Images filtered by Gallery they belong to.
  3.   */
  4. public function executeBrowse(sfWebRequest $request)
  5. {
  6. // init generator
  7. $this->getContext()->getConfigCache()->import('modules/Image/config/generator.yml', false, true);
  8. if($this->getController()->actionExists('Image', 'Filter'))
  9. {
  10. // Image module configuration
  11. $configuration = new ImageGeneratorConfiguration();
  12.  
  13. // Image list filter
  14. $filters = $configuration->getFilterForm(array()); /* @var $filters sfFormFilter */
  15.  
  16. // Filter requires CRSF token
  17. $params[$filters->getCSRFFieldName()] = $filters->getCSRFToken();
  18. $params['gallery_id'] = $this->getRoute()->getObject()->getId();
  19.  
  20. $request->getParameterHolder()->clear(); // Only need filter params.
  21. $request->setParameter($filters->getName(), $params);
  22.  
  23. $this->forward('Image', 'Filter');
  24. }
  25. // Image list filter is off
  26. $message = 'An error occured! Browsing images under chosen gallery is ' .
  27. 'unavailable. Try again later or browse all images.';
  28. $this->getUser()->setFlash('error', $message);
  29. $this->redirect('@gallery');
  30. }

Ta linijka mnie denerwuje. Wydaje się taka nie na miejscu z tym podawaniem ścieżki:
  1. $this->getContext()->getConfigCache()->import('modules/Image/config/generator.yml', false, true);

Czy można zmusić symfony do wygenerowania generator.yml do cache w sposób inny niż bezpośrednio działając na ConfigCache i gdzie mógłbym podać tylko nazwę modułu, a nie ścieżkę do niego? Na dobrą sprawę sfController::actionExists() powinno to załatwić, ale niestety nie załatwia.
Sprawdziłem, że sfController::forward() uruchamia kompilację generator.yml, ale dla mnie byłoby dziwne - w kodzie - najpierw forwardować (bezpośrednio przez kontroler), a dopiero później ustawiać filtry.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
destroyerr
post
Post #2





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

Ostrzeżenie: (0%)
-----


Samo sfController::actionExists() niestety nic nie da, ponieważ symfony odpala generator.yml w forward, a dopiero potem sprawdza czy akcja istnieje.
Innego sposobu chyba jednak nie ma, sam uruchamiałem to w ten sposób.
Go to the top of the page
+Quote Post
LBO
post
Post #3





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Naprawione
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 18:13