【发布时间】:2019-04-23 20:35:31
【问题描述】:
假设我有 2 个控制器,内容和新闻:
class ContentController extends Symfony\Bundle\FrameworkBundle\Controller\Controller {
public function indexAction() {}
}
和
class NewsController extends ContentController {}
如果新闻控制器的 indexAction 视图不存在(indexAction 继承自父类),我希望 Symfony 使用 Content 控制器的视图(indexAction)。我怎样才能做到这一点? Symfony 总是尝试渲染视图 News/index.html.php 但如果这个视图不存在我希望 Symfony 渲染 Content/index.html.php。
是否可以告诉 Symfony 渲染引擎这样的事情:如果存在文件 News/index.html.php 取这个,否则取 Content/index.html.php
我使用的是 PHP 模板引擎,而不是 Twig。
我们目前正在使用 Zend 框架,您可以简单地添加一个脚本(视图)路径,如此处所述View overloading in Zend Framework
【问题讨论】:
-
“未找到视图”您的意思是未找到路线? “脚本路径”是什么意思?
-
不,我的意思是意见。例如。 NewsController indexAction 没有 index.html.php 视图,但 ContentController 中存在 index.html.php 视图和操作。脚本路径是视图所在的位置(例如资源/视图)。 NewsController 的视图位于 app\Resources\views\News 下,ContentController 位于 app\Resources\views\Content 下
-
您能否编辑您的问题并添加一个示例操作及其路由配置?
-
我已经编辑了我的问题。你现在明白我想要达到的目标了吗?
-
在大多数情况下,一个动作会渲染一个模板,并且可以调用一个路由。您能否使用您所说的两个
indexActions的代码再次编辑您的问题?否则,您可以检查模板是否以file_existsphp.net/manual/de/function.file-exists.php 退出?
标签: php symfony view templating templating-engine