如何在Symfony2表单上翻译"(可选)"

Đur*_*nić 4 symfony

我有一些不需要的表单类型.表单标签应该是本地化的,这很容易.

但是,当您将某种表单类型配置'required'=>'false'为时,会在类型标签后面出现单词"(可选)".

翻译"可选"或禁用它的正确方法是什么?

顺便说一句.我现在根本没有看到任何方式.

谢谢

 "require": {
     "php": ">=5.3.3",
     "symfony/symfony": "v2.3.0",
     "doctrine/orm": ">=2.2.3,<2.4-dev",
     "doctrine/doctrine-bundle": "1.2.*",
     "twig/extensions": "1.0.*",
     "symfony/assetic-bundle": "2.1.*",
     "symfony/swiftmailer-bundle": "2.3.*",
     "symfony/monolog-bundle": "2.3.*",
     "sensio/distribution-bundle": "2.3.*",
     "sensio/framework-extra-bundle": "2.3.*",
     "sensio/generator-bundle": "2.3.*",
     "jms/security-extra-bundle": "1.4.*@dev",
     "jms/di-extra-bundle": "1.3.*@dev",
     "twitter/bootstrap" : "dev-master",
     "cg/kint-bundle": "dev-master",
     "raveren/kint": "dev-master",
     "mopa/bootstrap-bundle": "dev-master",
     "sonata-project/intl-bundle": "dev-master",
     "egeloen/ckeditor-bundle": "2.*"
},
Run Code Online (Sandbox Code Playgroud)

Nic*_*ich 10

mopa/bootstrap-bundle正在引入"可选"字符串呈现.

它可以在bundle的Resources/views/Form/fields.html.twig中找到.

form form_label_asterisk中添加"可选"字符串:

{% block label_asterisk %}
    {% if required %}
        {% if render_required_asterisk %}
             <span>*</span>
        {% endif %}
    {% else %}
        {% if render_optional_text %}
            <span>{{ "(optional)"|trans({}, translation_domain) }}</span>
        {% endif %}
    {% endif %}
{% endblock label_asterisk %}
Run Code Online (Sandbox Code Playgroud)

如您所见,渲染需要您为要翻译的可选字符串设置translation_domain.正确的实现将使用回退'消息'

...
<span>{{ "(optional)"|trans({}, translation_domain|default('messages')) }}</span>
...
Run Code Online (Sandbox Code Playgroud)

解:

通过添加到config.yml完全删除可选的渲染:

# app/config/config.yml
parameters:
    mopa_bootstrap.form.render_optional_text: false
Run Code Online (Sandbox Code Playgroud)

...或添加render_optional_text => false到您的表单选项.

可以在此处找到BootstrapBundle的默认表单类型的覆盖.

或者,您可以通过以单个形式覆盖块来删除可选字符串

{% form_theme form _self %}

{% block label_asterisk %}
    {% if required %}
        {% if render_required_asterisk %}
             <span>*</span>
        {% endif %}
    {% endif %}
{% endblock label_asterisk %}
Run Code Online (Sandbox Code Playgroud)

有关覆盖表单元素的更多信息,请参阅我的答案.