我尝试将存储库拉入symfony 3.4中的表单,然后在提交表单时使用所选选项。
这是表单代码:
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('text', TextareaType::class, [
'label' => 'Text'
])
->add('category', EntityType::class, [
'class' => Category::class,
'choice_label' => 'name',
'query_builder' => function(CategoryRepository $repo) {
return $repo->createQueryBuilder('c')
->groupBy('c.name');
}
])
->add('subcategory', EntityType::class, [
'class' => Category::class,
'choice_label' => 'subcategory',
'query_builder' => function(CategoryRepository $repo) {
return $repo->createQueryBuilder('c')
->groupBy('c.subcategory');
}
]);
}
有了这个,我可以呈现出这个形状,它看起来很好。我可以在CategoryReportory中选择各种选项。
{% block body %}
{{ form_start(form) }}
{{ form_label(form.name) }}
{{ form_errors(form.name) }}
{{ form_widget(form.name) }}
{{ form_label(form.subcategory) }}
{{ form_errors(form.subcategory) }}
{{ form_widget(form.subcategory) }}
{{ form_end(form) }}
在提交时,使用xdebug检查时,类别是对象类别。我可以看到正确的值(在表单下拉列表中选择的值),但我只需要字符串,例如category.name。我该怎么做?
另外,它可能需要一个不同的问题,但是当我选择其中一个类别时,我希望更新子类别以排除那些不属于所选类别的子类别。我知道这可能需要jquery。