Pat*_*ckB 23 symfony-forms symfony twig symfony-2.2 symfony-2.3
我有一个简单的问题.
我有一个带有字段的表单,例如:
$builder
->add('x')
->add('y')
->add('z')
;
Run Code Online (Sandbox Code Playgroud)
在我的twig文件中,我使用了多个块,我想停止渲染字段...我查看了b.html.twig文件!
a.html.twig
{% block body %}
{% block form %}
{{ form_widget(form) }}
{% endblock form %}
{% endblock body %}
Run Code Online (Sandbox Code Playgroud)
b.html.twig
{% block form %}
{{ form.x.set('rendered', true) | default() }}
{{ parent() }}
{% endblock form %}
Run Code Online (Sandbox Code Playgroud)
如果我删除"default()"我得到错误,该对象不能转换为字符串.实际上,表单呈现所有字段......包含x字段.但他们不应该渲染x字段......
先感谢您!
Com*_*tar 76
我在这里错过了这个问题吗?如果你想将一个字段设置为渲染,即使它不是简单的调用:
{% do form.x.setRendered %}
Run Code Online (Sandbox Code Playgroud)
如果我误解了,我道歉.
您可以使用下一个结束表单语句来阻止呈现在表单中定义但未在模板中描述的表单字段:
{{ form_end(form, {'render_rest': false}) }}
Run Code Online (Sandbox Code Playgroud)
例如,我们定义下一个表单:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add(
'id',
HiddenType::class,
array(
'required' => false
)
)
->add(
'name',
TextType::class,
array(
'required' => false
)
)
->add(
'comment',
TextType::class,
array(
'required' => false
)
)
->add(
'amount',
TextType::class,
array(
'required' => false
)
);
}
Run Code Online (Sandbox Code Playgroud)
对于这种形式,我们描述一个模板,但我们不希望渲染领域id,所以我们可以使用选项render_rest中form_end块ommit渲染领域id:
{# render opening form tag #}
{{ form_start(form) }}
{# render field with label #}
{{ form_row(form.name) }}
{# render only field #}
{{ form_widget(form.comment) }}
{# render only label #}
{{ form_label(form.amount) }}
{# render only field #}
{{ form_widget(form.amount) }}
{# if csrf token is enabled for form render field #}
{% if form._token is defined %}
{{ form_widget(form._token) }}
{% endif %}
{# render closing form tag and do not render rest form elements #}
{{ form_end(form, {'render_rest': false}) }}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18310 次 |
| 最近记录: |