【问题标题】:Test if controller response is defined in Twig测试控制器响应是否在 Twig 中定义
【发布时间】:2015-12-04 14:47:23
【问题描述】:

我想测试控制器响应是否是这样定义的:

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

但我收到此错误:

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

我尝试将渲染放在 () 之间,但仍然出现同样的错误。

这是我的控制器:

 /**
 * @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 }}

【问题讨论】:

    标签: symfony twig


    【解决方案1】:

    为什么不使用基本的方法来测试code是否被定义?

    例如:

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

    编辑

    -控制器

    /**
     * @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
        ]);
    }
    

    -查看

    您只需要处理参数内容: 例如:

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

    【讨论】:

    • 控制器不会总是返回值。我只想在有值时显示一个div。
    • 哇...视图中的值是如何填充的?
    • 控制器调用网络服务并根据代码(家庭、工作、..)选择特定的电话号码,我只想在允许时显示号码。
    • 如果我输入一个应该显示的数字,或者如果我删除它,则应该隐藏孔 div
    • 因此,控制器向视图返回了一些内容。我们可以看一下控制器吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多