Распечатать все формы Symfony2

0

В настоящее время у меня есть скрипт в Symfony, где я создаю форму в контроллере. Эта форма показывает содержимое объекта "Страница". Если пользователь редактирует форму и отправляет ее, форма корректирует соответствующие данные в базе данных.

  /**
 * Webpage allowing user to edit a page and her attributes
 *
 * @Route("/edit")
 */
public function editAction(Request $request)
{
    /*
     * Get an array of all the current pages stored in the database.
     *
     * foreach loop through each website and create a seperate form for them
     *
     */
    $em = $this->getDoctrine()->getManager();
    $pages = $em->getRepository(Page::class)->findAll();


    foreach ($pages as $page) {
        $editform= $this->createFormBuilder($page)
            ->add('name', 'text')
            ->add('location', 'url')
            ->add('displayTime', 'integer')
            ->add('save', 'submit', array(
            'label' => 'Edit page'
        ))

            ->getForm();

        $editform->handleRequest($request);

        if ($editform->isValid()) {
            $em = $this->getDoctrine()->getManager();

            $em->flush();
            return new Response('Page edited successfully - immediately effective');
        }

    }



    return $this->render('WalldisplayBundle:Walldisplay:edit.html.twig',
        array(
            'editform' => $editform->createView()
        ));
}

К сожалению, это только печатает форму с последней записью в базе данных. Я хотел бы иметь форму, созданную для -всего входа в базу данных, а не только последнюю. Я пробовал итерацию через репозиторий Doctrine, но не повезло. Как я могу решить эту проблему?

Теги:
forms
doctrine2

1 ответ

0

Может быть, это сработает. Я не тестировал.

/**
 * Webpage allowing user to edit a page and her attributes
 *
 * @Route("/edit")
 */
public function editAction(Request $request)
{
    /*
     * Get an array of all the current pages stored in the database.
     *
     * foreach loop through each website and create a seperate form for them
     *
     */
    $em = $this->getDoctrine()->getManager();
    $pages = $em->getRepository(Page::class)->findAll();


    foreach ($pages as $key=>$page) {
        $editforms[$key] = $this->createFormBuilder($page)
            ->add('name', 'text')
            ->add('location', 'url')
            ->add('displayTime', 'integer')
            ->add('save', 'submit', array(
            'label' => 'Edit page'
        ))

            ->getForm();

        foreach($editforms as $editform){
            $editform->handleRequest($request);

            if ($editform->isValid()) {
            $em = $this->getDoctrine()->getManager();

            $em->flush();

        }

        }

        return new Response('Page edited successfully - immediately effective');


    }

    foreach($editforms as $editform){
            $editform->handleRequest($request);

            if ($editform->isValid()) {
            $em = $this->getDoctrine()->getManager();

            $em->flush();

    }
    foreach($editforms as $editform){
        $arrayForm[$editform] = $editform->createView();   
    }
    return $this->render('WalldisplayBundle:Walldisplay:edit.html.twig', $arrayForm);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню