Я хотел бы создать форму для импорта некоторых данных. Но эта форма требует одну информацию под названием Constructeur
. На моем сайте вы можете создать несколько Constructeur
. Но для моей страницы я хочу, чтобы пользователь мог выбрать конструктор, если существует или, если нет, установить флажок, и тогда появится форма, и пользователь сможет создать новый Constructeur
.
Проблема в том, что я не знаю, как это сделать с Symfony 4. Я генерирую свои формы с помощью команды make:form
.
Вот мой текущий контроллер (код для создания конструктора еще не здесь)
CatalogueController
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
CatalogueType
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
и показать новый ввод, где пользователь собирается написать имя constructeur (я знаю, как это сделать позже с контроллером, но как я могу иметь дело с видом.)