Symfony 3: Как подавать формы в сборник форм отдельно? - PullRequest
0 голосов
/ 30 декабря 2018

Мне интересно, могу ли я отправлять формы внутри коллекции отдельно?У меня очень длинная коллекция форм с кнопками для сохранения каждой подчиненной формы (в основном заполнение и проверка формы сразу было бы затруднительно).Таким образом, нажатие кнопки предполагает, что отправляется только соответствующая подчиненная форма, но она отправляет всю коллекцию.

getDoctrine()->getManager();

$user = $this->getUser();

if(!count($user->getApplicants())) {
$app = new Applicant();
$app->setUser($user);
$user->setApplicants($app);
}

if(!count($user->getAddresses())) {
$address = new Address();
$address->setUser($user);
$user->setAddresses($address);
}

if(!count($user->getCompanies())) {
$company = new Company();
$company->setUser($user);
$user->setCompanies($company);
}

if(!count($user->getDirectors())) {
$director = new Director();
$director->setUser($user);
$user->setDirectors($director);
}

$form = $this->createForm('AppBundle\Form\UserType', $user);

$form->handleRequest($request);

if ($form->isSubmitted() && $form->isValid()) {

if ($form->getClickedButton() && 'submitApplicants' === $form- 
>getClickedButton()->getName()) {

$applicant = $form->getData()->getApplicants()[0];

$applicant->setUser($user);

$em->persist($applicant);

$em->flush();

return $this->render('admin/index.html.twig', [
'form' => $form->createView()
]);

}
if ($form->getClickedButton() && 'submitAddresses' === $form- 
>getClickedButton()->getName()) {

$address = $form->getData()->getAddresses()[0];

$em->persist($address);

$em->flush($address);

return $this->render('admin/index.html.twig', [
'form' => $form->createView()
]);

}

if ($form->getClickedButton() && 'submitCompanies' === $form- 
>getClickedButton()->getName()) {

$company = $form->getData()->getCompanies()[0];

$em->persist($company);
$em->flush($company);

return $this->render('admin/index.html.twig', [
'form' => $form->createView()
]);

}

if ($form->getClickedButton() && 'submitDirectors' === $form- 
>getClickedButton()->getName()) {

$director = $form->getData()->getDirectors()[0];

$em->persist($director);

$em->flush($director);

return $this->render('admin/index.html.twig', [
'form' => $form->createView()
]);

}

//$em->flush();
}

return $this->render('admin/index.html.twig', [
'form' => $form->createView()
]);
}
}

1 Ответ

0 голосов
/ 30 декабря 2018

Мое мнение таково, что вам нужно отправить подчиненную форму через Javascript.Добавьте некоторый js-код к кнопке отправки:

  1. Выполните запрос POST ajax для действия контроллера
  2. Сделайте несколько проверок для данных формы
  3. Возвратите либосообщение об ошибке или какой-нибудь HTML (что хотите)
  4. Сделайте что-нибудь с этим сообщением

Таким образом, вы сможете отправить каждую форму отдельно.Также измените тип кнопки отправки на обычную кнопку.В противном случае вы запустите отправку формы для всей страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...