【发布时间】:2019-05-10 14:45:58
【问题描述】:
我想创建一个表单来导入一些数据。但此表格需要一个名为Constructeur 的信息。在我的网站上,您可以创建一些 Constructeur 。但是对于我的页面,我希望用户能够选择一个构造器,如果存在,或者如果不选中一个框,然后会出现一个表单,用户将能够创建一个新的Constructeur。
问题是我不知道如何使用 Symfony 4 执行此操作。我使用 make:form 命令生成我的表单。
这是我当前的控制器(创建构造函数的代码还没有在这里)
目录控制器
class CatalogueController extends AbstractController
{
/**
* @Route("/admin/catalogues/create", name="admin.catalogues.new")
* @param Request $request
* @return RedirectResponse | Response
*/
public function new(Request $request)
{
$catalogue = new Catalogue();
$form = $this->createForm(CatalogueType::class, $catalogue);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()){
$this->em->persist($catalogue);
$this->em->flush();
$this ->addFlash('success', 'Catalogue crée avec succès');
return $this->redirectToRoute('admin.catalogues.index');
}
return $this->render('/admin/catalogues/create.html.twig', [
'catalogue' => $catalogue,
'form' => $form->createView()
]);
}
//some codes
}
这是我的
CatalogueType(可以看constructeur_id
目录类型
class CatalogueType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('catalogue_date_debut', DateType::class, [
'widget' => 'single_text',
'html5' => false,
'attr' => ['class' => 'datepicker'],
])
->add('catalogue_date_fin', DateType::class, [
'placeholder' => 'Sélectionner un date de début',
'widget' => 'single_text',
'html5' => false,
'attr' => ['class' => 'datepicker'],
])
->add('is_active', CheckboxType::class, [
'label' => 'Le catalogue est-il actif ?',
'value' => 0,
'required' => false,
])
->add('entreprise_id')
->add('contructeur_id')
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Catalogue::class,
]);
}
}
这是我的观点以及我如何实现我的表单
create.html.twig
{% extends 'admin/baseadmin_html.twig' %}
{% block title %}Créer un Catalogue{% endblock %}
{% block body %}
<div class="row">
<div class="col s12 m12 l12">
<div class="card white">
<div class="card-content black-text">
<span class="card-title">Créer un Catalogue</span>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col s12 m12 l12">
<div class="card-panel ">
<div class="row">
{{ form_start(form) }}
{{ form_widget(form) }}
<button class="btn s12 m6 l3">{{ button|default('Enregister') }}</button>
{{ form_end(form) }}
</div>
</div>
</div>
</div>
{% endblock %}
所以这是我的问题。当我的用户选中一个框以隐藏我的 constructeur_id 上的选择并显示一个新的输入时,我怎么能允许我的用户在其中写入构造者名称(我知道稍后如何使用控制器执行此操作,但我该如何处理与视图。)
【问题讨论】:
标签: javascript php symfony twig symfony4