Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] "Czysty" sposób na zainicjalizowanie kompilacji generator.yml
Forum PHP.pl > Forum > PHP > Frameworki
LBO
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.
destroyerr
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.
LBO
Naprawione
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.