Symfony 如何检查表单字段在呈现控制器的细枝模板中是否有数据

Symfony 如何检查表单字段在呈现控制器的细枝模板中是否有数据,symfony,twig,Symfony,Twig,这是我们的后续问题。我想知道的是如何检查实体变量是否存在/是否定义/是否为null。我想我可以做到这一点: {% if entity.orgId is defined %} {{ render(controller( 'CompanyNameofBundle:OrgMember:test', {'orgid':entity.orgId})) }} {% endif %} 但如果entity.orgId为null,则在呈现模板时会引发异常(“产品不存在”)。您有两个选项: 不要使用复选框

这是我们的后续问题。我想知道的是如何检查实体变量是否存在/是否定义/是否为null。我想我可以做到这一点:

{% if entity.orgId is defined %}
{{ render(controller(
    'CompanyNameofBundle:OrgMember:test', {'orgid':entity.orgId})) }}
{% endif %}
但如果entity.orgId为null,则在呈现模板时会引发异常(“产品不存在”)。

您有两个选项:

  • 不要使用复选框调用渲染控制器

    {% if entity.orgId is defined and entity.orgId is not null %}
    
  • 确保OrgMemberController中的testAction为空安全(检查参数orgid是否为空)

  • 试试这个:

    {% if entity.orgId is defined %}
        {% if entity.orgId is null %}
            {# do something #}
        {% else %}
            {# do anythingelse #}
        {% endif %}
    {% endif %}
    

    将控制器更改为返回null而不是异常:

    public function testAction($orgid = null) {
        if (!$orgid) { return null; }
    // Rest of code.
    }
    

    谁抛出异常的可能重复项?1)不起作用仍然得到相同的结果在模板呈现期间抛出异常(“产品不存在”)。2) 我不能那样做,因为我还需要那个东西。渲染控制器需要该参数才能工作。这与上面的答案相同,只是您将其分为两个for循环。有一点不同,我使用了
    is null
    而不是
    is not null
    ,这在任何情况下都是非常重要的,is问题必须在控制器中进行检查,因为它从未设置为null,因此除了错误之外不会返回任何东西。这是我一直在寻找的极好方法@马尔科姆