templateの存在確認
ActionでsetTemplateをする時に、そのTemplateの存在を確認したい。
<?php public function existsTemplate($template, $params = array()) { if (!is_array($params)) { $params = array(); } $default_params = array( 'moduleName' => $this->getModuleName(), 'actionName' => $this->getActionName(), 'viewName' => sfView::SUCCESS, ); $p = $params + $default_params; $old_template = $this->getTemplate(); $this->setTemplate($template); $context = $this->getContext(); $controller = $context->getController(); $viewInstance = $controller->getView($p['moduleName'], $p['actionName'], $p['viewName']); $viewInstance->initialize($context, $p['moduleName'], $p['actionName'], $p['viewName']); $template_path = sprintf('%s/%s', $viewInstance->getDirectory(), $viewInstance->getTemplate() ); $this->setTemplate($old_template); return is_readable($template_path); }
・・・かなりの力技
※追記:$viewInstance->execute();はいらないのではずした。