将 TBBC Money/Currency 包用于 Symfony/Bootstrap 表单

Using TBBC Money/Currency Bundle for Symfony/Bootstrap Forms

我不认为这个问题在回顾历史和 google... 我正在为一个个人项目发现 symfony2,但在使用 TBBC Money/Currency 捆绑包(在 packagist 上找到)实现表单时,我不确定以正确的方式解决问题。

我有一个包含价格字段(类型 "Money")的 "Expense" class,我想为其创建一个表单。

在我的 "ExpenseType" 文件中,我有以下内容:

public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder
                ->add('title', TextType::class)
                ->add('actualDate', DateType::class, array('widget' => 'single_text'))
                ->add('comment', TextareaType::class)
                ->add('price', MoneyType::class, array())
                ->add('user', 'entity', array(
                    'class' => 'VPAccountsBundle:User',
                    'property' => 'username'))
        ;
    }

在我的 twig 文件中显示我的表格:

<div class="row">
            <div class="col-lg-3 col-md-3 control-label">
                {{ form_label(form.price, "Amount" ) }}
            </div>
            <div class="col-lg-4 col-md-4">
                {{ form_widget(form.price , { 'attr':{ 'class':'form-control', 'placeholder':'Amount' } } ) }}
            </div>
            {{ form_errors(form.price) }}

        </div>

我得到的是this.

我想要得到的是带有下拉按钮的 bootstrap 输入(参见 mockup)。但我真的不知道如何进行。

有人遇到过这种情况吗?任何帮助,将不胜感激! :)

非常感谢。

Symfony 中的小部件或表单主题有很好的文档记录here and IMO you should go through Inside the same Template as the Form。您可以从 form_div_layout.html.twig 扩展,然后在您的自定义模板上通过更改以下块覆盖 money_widget 的呈现方式:

{%- block money_widget -%}
    {{ money_pattern|replace({ '{{ widget }}': block('form_widget_simple') })|raw }}
{%- endblock money_widget -%}

希望对您有所帮助

正在回复我自己... 正如 bundle 文档中正确指出的那样,我必须配置我的 config.yml 以向 twig 声明新类型:

# config.yml
twig:
    form:
        resources:
            - 'TbbcMoneyBundle:Form:fields.html.twig'

表单元素呈现得更好并且应该很容易定制。