symfony - 渲染前检查模板是否存在

标签 symfony twig transclusion

有没有办法在调用渲染之前检查 Twig 模板是否存在? try catch block 似乎不起作用,至少在开发环境中是这样,而且,我更喜欢检查而不是异常的成本。

该类TwigEngine有一个exists()方法,但没有找到使用示例。

最佳答案

如果配置为默认,保存 Twig 引擎的服务是"template"。

在 Controller 内执行以下操作:

if ( $this->get('templating')->exists('AcmeDemoBundle:Foo:bar.html.twig') ) {
     // ...
}

另一种方法是捕获 render() 方法抛出的异常,如下所示:

 try {
      $this->get('templating')->render('AcmeDemoBundle:Foo:bar.html.twig')
  } catch (\Exception $ex) {
     // your conditional code here.
  }

在普通 Controller 中...

$this->render('...')

只是...的别名

$this->container->get('templating')->renderResponse($view, $parameters, $response);

...同时...

$this->get('...') 

...是

的别名
$this->container->get('...')

看看Symfony\FrameworkBundle\Controller\Controller .

关于symfony - 渲染前检查模板是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16751401/

相关文章:

javascript - 来自 ajax 调用的 symfony 中的表单验证

php - Doctrine2 架构设计 - 带有补充数据的实体

php - 从 Twig 设置数组元素

Angular2 ViewChildren 与嵌入相结合

typescript - 类本身可以看到嵌入的内容吗?

php - Symfony 中的 index.php 文件在哪里?

php - 无法使用 Symfony 4.1 : could not find driver 创建数据库

Symfony 表单标签渲染

php - 如何检查响应 TWIG 中是否存在记录 - 表格格式的数据

angularjs - 将数据从重复组件传递到嵌入的重复元素