我正在使用 Symfony 2 构建一个应用程序,并且想知道如何最好地构建 DRY 表单。所以本质上我想要一个模板,例如form.html.twig 然后我用它来创建和编辑下划线实体。这意味着,我更改了提交按钮上的文本,以便在创建时显示“创建”,在编辑时显示“编辑”。我怎样才能最好地完成这样的事情?
目前我有这样的事情:
我的表单类型:
class GroupType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('name', 'text')
->add('description', 'textarea')
->add('status', 'hidden', array(
'data' => 0
))
->add('createAndFinish', 'submit')
->add('createAndAddUsers', 'submit');
}
public function getName() {
return 'group';
}
}
相应模板中的我的表单:
{{ form_start(groupForm) }}
{% if not groupForm.vars.valid %}
<div class="alert alert-danger">
{{ form_errors(groupForm) }}
</div>
{% endif %}
<div class="form-group">
{{ form_label(groupForm.name) }}
{{ form_errors(groupForm.name) }}
{{ form_widget(groupForm.name, {'attr': {'class': 'form-control'}}) }}
</div>
<div class="form-group">
{{ form_label(groupForm.description) }}
{{ form_errors(groupForm.description) }}
{{ form_widget(groupForm.description, {'attr': {'class': 'form-control'}}) }}
</div>
{{ form_widget(groupForm.createAndFinish, {'attr': {'class': 'btn btn-primary'}}) }}
{{ form_widget(groupForm.createAndAddUsers, {'attr': {'class': 'btn btn-primary'}}) }}
{{ form_end(groupForm) }}
我本质上想要的是这样的:
{% if (formType == 'create') %}
{{ form_widget(groupForm.createAndFinish, {'attr': {'class': 'btn btn-primary'}}) }}
{{ form_widget(groupForm.createAndAddUsers, {'attr': {'class': 'btn btn-primary'}}) }}
{% elseif (formType == 'edit') %}
{{ form_widget(groupForm.createAndFinish, {'attr': {'class': 'btn btn-primary'}, 'value': 'Edit'}) }}
{% endif %}
但是还有其他更优雅并且模板中代码更少的解决方案吗?感谢您的想法!
最佳答案
您可以使用 if 来检查某个项目是否已定义,然后显示它。
{% if groupForm.createAndFinish is defined %}
{{ form_widget(groupForm.createAndFinish, {'attr': {'class': 'classes'}}) }}
{% endif %}
关于php - 如何构建干 Twig 形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20300708/