Symfony Form-Form类或Twig函数中的表单类型选项?

时间:2019-11-22 08:39:54

标签: php forms symfony twig

在标题中指定它有点困难,因此我将举一个具体的例子。 我创建了一个名为 FlashcardType 的表单类,其中有buildForm()方法并在其中包含以下代码

public function buildForm(FormBuilderInterface $builder, array $options) 
{
    $builder
        ->add('exampleSentence', CheckboxType::class, [
             'label' => 'Example sentence'
        ])
        ->add('pronunciation', CheckboxType::class, [
            'label' => 'Pronunciation'
        ])
        ->add('sortBy', ChoiceType::class, [
            'label' => 'Sort by',
            'choices' => [
                'Date increase' => 1,
                'Date decrease' => 2,
                'Word alphabetically' => 3,
                'Word not alphabetically' => 4
            ]
        ])
        ->add('save', SubmitType::class, [
            'label' => 'Submit'
    ]);
}

因此结果表单将包含2个复选框,一个 select下拉列表提交按钮。 在控制器内部,我将此表单传递给createView()方法进行查看。

为了使这个问题更简短,我们仅以第一个复选框为例。 因此,在Twig文件中,我的代码如下:

{# ...form code... #}
<div class="form-check form-check-inline mr-4">
    {{ form_widget(form.exampleSentence, {'attr': {'class': 'form-check-input'}}) }}
    {{ form_label(form.exampleSentence, null, {
        'label_attr': {'class': 'form-check-label'}
    }) }}
</div>
{# ...form code... #}

对于复选框类型(不仅限于此),我们可以在创建formBuilder()表单时设置options outputted in the table。但是many of these options我们可以在Twig函数中覆盖。 对于第一个复选框,我将标签设置在buildForm()内,但也可以将其设置在{{ form_label() }} Twig函数内。而且我可以将其用于许多(如果不是每种)选项和类型。

那么,表单生成器和Twig表单函数内部的写选项之间有什么区别?我们应该在builder里面写哪个选项,在Twig里面写哪个选项?在这种情况下是否有一些好的做法?

提前感谢您提供所有答案!

0 个答案:

没有答案