Select 'Please Select' 如果 var 与下拉列表中的值不匹配

Select 'Please Select' if var does not match value in dropdown

我是 Twig 的新手,正在努力应对以下情况。

我有一个 select 国家名称(英国和爱尔兰共和国),当返回的 Twig 变量值与 select 中的值不匹配时,我正在苦苦挣扎。

如果变量为空,我可以正常工作,但需要上述方面的帮助。

这是我的完整 select HTML(为了清楚起见,我删除了所有 Twig 代码)

<select id="compAddCountryDd" name="compAddCountryDd" class="form-control address">
    <option value='' class="optionPlaceholder">Please Select</option>
    <option value="United Kingdom">United Kingdom</option>
    <option value="Republic of Ireland">Republic of Ireland</option>
</select>

这是我的 'Please Select' option 的代码,如果为空,我正在使用

{% if companyDetails is defined and companyDetails.address.country == '' %}
    <option value='' class="optionPlaceholder"
            selected style="display: none" disabled>
        Please Select
    </option>
{% endif %}

但如果变量是 defined 但与 select.

中的值不匹配,我似乎无法显示它

我已经为 Twig 尝试了以下代码 if

{% if companyDetails is defined and companyDetails.address.country == '' and
      companyDetails.address.country != 'United Kingdom' and
      companyDetails.address.country != 'Republic of Ireland' %}

还有

{% if companyDetails is defined and companyDetails.address.country == '' or
      companyDetails.address.country != 'United Kingdom' or
      companyDetails.address.country != 'Republic of Ireland' %}

基本上,我需要显示我的 'Please Select' option,如果它:

  1. 已定义
  2. 不等于'United Kingdom'
  3. 不等于'Republic of Ireland'

为了符合您的逻辑,您在此处遗漏了一些括号:

  • 您想定义变量
  • 国家为空或不等于英国且不等于爱尔兰
{% if companyDetails|default and (companyDetails.address.country|trim == '' or companyDetails.address.country != 'United Kingdom' and companyDetails.address.country != 'Republic of Ireland') %}
    Show
{% else %}
    Don't show
{% endif %}

不过,我会将其重写为以下内容:

{% if companyDetails|default and (companyDetails.address.country|trim == '' or companyDetails.address.country not in [ 'United Kingdom', 'Republic of Ireland' ]) %}
    Show
{% else %}
    Don't show
{% endif %}

demo

这将是创建带有 ChoiceType 的表单 class 的好机会? 在您的控制器中更容易管理(获取存储库,show/not show/disabled),分离代码和添加翻译

文档中的一些很好的示例:https://symfony.com/doc/current/reference/forms/types/choice.html

另一个很好的例子:https://symfonycasts.com/screencast/symfony-forms/dynamic-choice-type