【问题标题】:Symfony. Use form to add rows to doctrine database.交响乐。使用表单向教义数据库添加行。
【发布时间】:2017-04-14 10:53:41
【问题描述】:

我需要在学说中向数据表中添加行。当然我知道如何创建数据库以及如何添加一些没有表单的数据。但我需要制作 symfony 制作的页面以通过创建的表单向数据库添加行。

这是表单构建器的路径

    /**
 * @route("/lol")
 */
public function newAction(Request $request)
{
    // createFormBuilder is a shortcut to get the "form factory"
    // and then call "createBuilder()" on it

    $form = $this->createFormBuilder()
        ->add('Pytanie', TextareaType::class)
        ->add('Odpowiedz1', TextType::class)
        ->add('Prawidlowa1', CheckboxType::class)
        ->add('Odpowiedz2', TextType::class)
        ->add('Prawidlowa2', CheckboxType::class)
        ->add('Odpowiedz3', TextType::class)
        ->add('Prawidlowa3', CheckboxType::class)
        ->add('Odpowiedz4', TextType::class)
        ->add('Prawidlowa4', CheckboxType::class)
        ->getForm();

    return $this->render('quiz/new.html.twig', array(
        'form' => $form->createView(),
    ));
}

这是树枝文件中的内容

    {{ form_start(form) }}
    {{ form_widget(form) }}

<input type="submit" />
{{ form_end(form) }}

当然还有创建实体。

    <?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * pytanie
 *
 * @ORM\Table(name="pytanie")
 * @ORM\Entity(repositoryClass="AppBundle\Repository\pytanieRepository")
 */
class pytanie
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="Pytanie", type="text")
     */
    private $pytanie;

    /**
     * @var string
     *
     * @ORM\Column(name="odpowiedz1", type="string", length=255)
     */
    private $odpowiedz1;

    /**
     * @var bool
     *
     * @ORM\Column(name="prawidlowa1", type="boolean", nullable=true, unique=true)
     */
    private $prawidlowa1;

    /**
     * @var string
     *
     * @ORM\Column(name="pytanie2", type="string", length=255)
     */
    private $pytanie2;

    /**
     * @var bool
     *
     * @ORM\Column(name="prawidlowa2", type="boolean", nullable=true, unique=true)
     */
    private $prawidlowa2;

    /**
     * @var string
     *
     * @ORM\Column(name="odpowiedz3", type="string", length=255)
     */
    private $odpowiedz3;

    /**
     * @var bool
     *
     * @ORM\Column(name="prawidlowa3", type="boolean", nullable=true, unique=true)
     */
    private $prawidlowa3;

    /**
     * @var string
     *
     * @ORM\Column(name="odpowiedz4", type="string", length=255)
     */
    private $odpowiedz4;

    /**
     * @var bool
     *
     * @ORM\Column(name="prawidlowa4", type="boolean", nullable=true, unique=true)
     */
    private $prawidlowa4;


    /**
     * Get id
     *
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set pytanie
     *
     * @param string $pytanie
     *
     * @return pytanie
     */
    public function setPytanie($pytanie)
    {
        $this->pytanie = $pytanie;

        return $this;
    }

    /**
     * Get pytanie
     *
     * @return string
     */
    public function getPytanie()
    {
        return $this->pytanie;
    }

    /**
     * Set odpowiedz1
     *
     * @param string $odpowiedz1
     *
     * @return pytanie
     */
    public function setOdpowiedz1($odpowiedz1)
    {
        $this->odpowiedz1 = $odpowiedz1;

        return $this;
    }

    /**
     * Get odpowiedz1
     *
     * @return string
     */
    public function getOdpowiedz1()
    {
        return $this->odpowiedz1;
    }

    /**
     * Set prawidlowa1
     *
     * @param boolean $prawidlowa1
     *
     * @return pytanie
     */
    public function setPrawidlowa1($prawidlowa1)
    {
        $this->prawidlowa1 = $prawidlowa1;

        return $this;
    }

    /**
     * Get prawidlowa1
     *
     * @return bool
     */
    public function getPrawidlowa1()
    {
        return $this->prawidlowa1;
    }

    /**
     * Set pytanie2
     *
     * @param string $pytanie2
     *
     * @return pytanie
     */
    public function setPytanie2($pytanie2)
    {
        $this->pytanie2 = $pytanie2;

        return $this;
    }

    /**
     * Get pytanie2
     *
     * @return string
     */
    public function getPytanie2()
    {
        return $this->pytanie2;
    }

    /**
     * Set prawidlowa2
     *
     * @param boolean $prawidlowa2
     *
     * @return pytanie
     */
    public function setPrawidlowa2($prawidlowa2)
    {
        $this->prawidlowa2 = $prawidlowa2;

        return $this;
    }

    /**
     * Get prawidlowa2
     *
     * @return bool
     */
    public function getPrawidlowa2()
    {
        return $this->prawidlowa2;
    }

    /**
     * Set odpowiedz3
     *
     * @param string $odpowiedz3
     *
     * @return pytanie
     */
    public function setOdpowiedz3($odpowiedz3)
    {
        $this->odpowiedz3 = $odpowiedz3;

        return $this;
    }

    /**
     * Get odpowiedz3
     *
     * @return string
     */
    public function getOdpowiedz3()
    {
        return $this->odpowiedz3;
    }

    /**
     * Set prawidlowa3
     *
     * @param boolean $prawidlowa3
     *
     * @return pytanie
     */
    public function setPrawidlowa3($prawidlowa3)
    {
        $this->prawidlowa3 = $prawidlowa3;

        return $this;
    }

    /**
     * Get prawidlowa3
     *
     * @return bool
     */
    public function getPrawidlowa3()
    {
        return $this->prawidlowa3;
    }

    /**
     * Set odpowiedz4
     *
     * @param string $odpowiedz4
     *
     * @return pytanie
     */
    public function setOdpowiedz4($odpowiedz4)
    {
        $this->odpowiedz4 = $odpowiedz4;

        return $this;
    }

    /**
     * Get odpowiedz4
     *
     * @return string
     */
    public function getOdpowiedz4()
    {
        return $this->odpowiedz4;
    }

    /**
     * Set prawidlowa4
     *
     * @param boolean $prawidlowa4
     *
     * @return pytanie
     */
    public function setPrawidlowa4($prawidlowa4)
    {
        $this->prawidlowa4 = $prawidlowa4;

        return $this;
    }

    /**
     * Get prawidlowa4
     *
     * @return bool
     */
    public function getPrawidlowa4()
    {
        return $this->prawidlowa4;
    }
}

到目前为止,我创建了这个。但后来我被困住了。而且我找不到任何好的提示让这个表单将数据写入数据库。

【问题讨论】:

    标签: php forms symfony doctrine-orm doctrine


    【解决方案1】:

    你需要像这样处理表单提交:

    /**
     * @route("/lol")
     */
    public function newAction(Request $request)
    {
    
        // first create new empty object
        $pytanie = new pitanie();
    
         // then you create your form with your object
        $form = $this->createFormBuilder($pitanie)
            ->add('Pytanie', TextareaType::class)
            ->add('Odpowiedz1', TextType::class)
            ->add('Prawidlowa1', CheckboxType::class)
            ->add('Odpowiedz2', TextType::class)
            ->add('Prawidlowa2', CheckboxType::class)
            ->add('Odpowiedz3', TextType::class)
            ->add('Prawidlowa3', CheckboxType::class)
            ->add('Odpowiedz4', TextType::class)
            ->add('Prawidlowa4', CheckboxType::class)
            ->getForm();
        $form->handleRequest($request);
    
        if ($form->isSubmitted() && $form->isValid()) {
             // $form->getData() holds the submitted values
             // but, the original `$pitanie` variable has also been updated
            $pitanie = $form->getData();
             // ... perform some action, such as saving the task to the database
             // for example, if Task is a Doctrine entity, save it!
             // $em = $this->getDoctrine()->getManager();
             // $em->persist($task);
             // $em->flush();
    
             return $this->redirectToRoute('task_success');
        }
        return $this->render('quiz/new.html.twig', array(
            'form' => $form->createView(),
        ));
    }
    

    查看文档以获取更多信息: http://symfony.com/doc/current/forms.html#handling-form-submissions

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-14
      • 2010-12-18
      • 1970-01-01
      • 2023-04-01
      • 2021-10-14
      相关资源
      最近更新 更多