Как зациклить форму / новый объект в Symfony

У меня проблема с зацикливанием формы в Symfony с использованием цикла while. Когда пользователь вводит один студенческий период и соответствует регистрации, подтвердите форму, чтобы он мог ввести второй студенческий период, а затем третий. Я делаю это неправильно или могу повторить entity = new Student (); чтобы позволить им войти в две сущности.

public function createAction(Request $request){
$entity = new Student();
$form = $this->createCreateForm($entity);
$form->handleRequest($request);

if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$student = $em->getRepository('AcmeDemoBundle:Payrollperiod')
->findOneBy([
'begindate'=>$form->get('beginDate')->getData(),
'lastdate'=>$form->get('lastDate')->getData()
]);

$registration = $em->getRepository('AcmeDemoBundle:Payrollweek')
->findBystartdateAndenddate(
$form->get('beginDate')->getData(),
$form->get('lastDate')->getData()
);

$counter = count($registration);

while($counter<=2) {
if ($student){
$this->addFlash('error', 'Duplicate error: Student Period already existed.' );
return $this->redirect($this->generateUrl('student'));
}
elseif ($registration){
foreach ($registration as $reg) {
$reg->setStudentid($entity);
}
$em->persist($entity);
$em->flush();

return $this->redirect($this->generateUrl('payrollperiod'));
}
else{
$this->addFlash('error', ' does not match .');
return $this->redirect($this->generateUrl('student'));
}
}

return array(
'entity' => $entity,
'form'   => $form->createView(),
);

}
}

0

Решение

Прочитайте документацию здесь http://symfony.com/doc/current/reference/forms/types/form.html#allow-extra-fields при добавлении полей. Ваш пользовательский интерфейс / интерфейс должен создавать больше полей, когда пользователю нужно добавить секунду или более периодов. Я должен сгенерировать правильные элементы формы Symfony, а затем, когда вы отправляете сообщение, вы можете обрабатывать его как стандартную форму, повторяя запрос, так как периоды будут представлены в виде массива.

Я делал что-то подобное в прошлом, и я добавил новую строку формы для вызова AJAX в шаблон, описывающий поля ввода формы, поэтому мне не приходилось создавать HTML-форму в Javascript / jQuery. .append() результаты шаблона к форме — отправьте и обработайте запрос.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector