测试是否在Twig中定义了控制器响应

时间:2015-12-04 14:47:24

标签: symfony twig

我想测试控制器响应是否定义如下:

{% if {{ render(path('controller_url', { 'code': 'code' } )) }} is defined %}
<div>
  phone : {{ render(path('footer_params', { 'code': 'telephone' } )) }}
</div>
{% endif %}

但是我收到了这个错误:

  

Twig_Error_Syntax:哈希键必须是带引号的字符串,数字,名称或括在括号中的表达式(意外标记&#34;标点符号&#34;值&#34; {&#34; in& #34; :: footer.html.twig&#34;第10行。

我试图将渲染放在()之间,但我仍然得到同样的错误。

这是我的控制者:

 /**
 * @Route("/footer_params/{code}", name="footer_params", defaults={"code"=null})
 *
 * @Template()
 */
public function footerParamsAction($code)
{
    $sParams = $this->getWebService('get_config_param', array('code' => $code));

    if ( !isset($sParams) )
    {
        throw new AccessDeniedException();
    }

    foreach ($sParams as $key => $value)
    {
        return   $this->render('Bundle:Example:footerParams.html.twig',array('params' => $value));

    }

}

$ value包含数字。

这就是观点:

{{ params }}

1 个答案:

答案 0 :(得分:1)

为什么不使用基本方法进行测试code

例如:

{% if code is defined %}
    some code
{% endif %}

修改

-Controller

/**
 * @Route("/footer_params/{code}", name="footer_params", defaults={"code"=null})
 *
 * @Template()
 */
 public function footerParamsAction($code)
 {
     $sParams = $this->getWebService('get_config_param', array('code' => $code));

    if (!isset($sParams)) {
        throw new AccessDeniedException();
    }

    return $this->render('Bundle:Example:footerParams.html.twig', [
        'params' => $sParams
    ]);
}

- 查看

您只需使用params内容: E.g:

{% if params.phone %}
  phone : {{ params.phone }}
{% endif %}

/.../