php - 如何构建干 Twig 形式?

标签 php forms symfony twig symfony-2.3

我正在使用 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/

相关文章:

php - mongodb 中的文本搜索 - php

javascript - 通用ajax表单提交

php - 如何在显示子类别时获取类别详细信息?

javascript - 使用其他下拉选项动态更改下拉选项

html - 水平表单输入重叠

Javascript 表单验证(返回问题)

php - 在 Symfony2 assetic 中加载 JS 文件的顺序

symfony - Composer 更新后@template 注释的问题

php - 如何使用 Symfony2 配置代码接收功能测试?

php - Yii2:编写表单 Action 的正确方式