/* * Browse list of Images filtered by Gallery they belong to. */ public function executeBrowse(sfWebRequest $request) { // init generator $this->getContext()->getConfigCache()->import('modules/Image/config/generator.yml', false, true); if($this->getController()->actionExists('Image', 'Filter')) { // Image module configuration $configuration = new ImageGeneratorConfiguration(); // Image list filter // Filter requires CRSF token $params[$filters->getCSRFFieldName()] = $filters->getCSRFToken(); $params['gallery_id'] = $this->getRoute()->getObject()->getId(); $request->getParameterHolder()->clear(); // Only need filter params. $request->setParameter($filters->getName(), $params); $this->forward('Image', 'Filter'); } // Image list filter is off $message = 'An error occured! Browsing images under chosen gallery is ' . 'unavailable. Try again later or browse all images.'; $this->getUser()->setFlash('error', $message); $this->redirect('@gallery'); }
Ta linijka mnie denerwuje. Wydaje się taka nie na miejscu z tym podawaniem ścieżki:
$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.