Quantcast
Channel: Grafikart | Derniers Sujets du forum
Viewing all articles
Browse latest Browse all 1542

Exécuter le controlleur d'un form depuis une vue

$
0
0

Bonjour, j'ai mon entité Diplome,

<?php

namespace App\UserBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Diplome
 *
 * @ORM\Table(name="tr_diplome")
 * @ORM\Entity(repositoryClass="App\UserBundle\Repository\DiplomeRepository")
 */
class Diplome
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
    /**
     * @ORM\ManyToOne(targetEntity="App\UserBundle\Entity\User")
     * @ORM\JoinTable(name="tr_user_id")
     * @ORM\JoinColumn(nullable=false)
     */
    private $user;
    /**
     * @var string
     *
     * @ORM\Column(name="titre", type="string", length=255)
     */
    private $titre;

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

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

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


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

    /**
     * Set titre
     *
     * @param string $titre
     *
     * @return Diplome
     */
    public function setTitre($titre)
    {
        $this->titre = $titre;

        return $this;
    }

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

    /**
     * Set dateObt
     *
     * @param string $dateObt
     *
     * @return Diplome
     */
    public function setDateObt($dateObt)
    {
        $this->dateObt = $dateObt;

        return $this;
    }

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

    /**
     * Set ecole
     *
     * @param string $ecole
     *
     * @return Diplome
     */
    public function setEcole($ecole)
    {
        $this->ecole = $ecole;

        return $this;
    }

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

    /**
     * Set commentaire
     *
     * @param string $commentaire
     *
     * @return Diplome
     */
    public function setCommentaire($commentaire)
    {
        $this->commentaire = $commentaire;

        return $this;
    }

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

    /**
     * Set user
     *
     * @param \App\UserBundle\Entity\User $user
     *
     * @return Diplome
     */
    public function setUser(\App\UserBundle\Entity\User $user)
    {
        $this->user = $user;

        return $this;
    }

    /**
     * Get user
     *
     * @return \App\UserBundle\Entity\User
     */
    public function getUser()
    {
        return $this->user;
    }
}

avec le formulaire DiplomeType.php,

<?php

namespace App\UserBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class DiplomeType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('titre')
            ->add('dateObt')
            ->add('ecole')
            ->add('commentaire')
            ->add('user')
        ;
    }

    /**
     * @param OptionsResolver $resolver
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'App\UserBundle\Entity\Diplome'
        ));
    }
}

le controller DiplomeController.php

public function newAction(Request $request)
    {
        $diplome = new Diplome();
        $form = $this->createForm('App\UserBundle\Form\DiplomeType', $diplome);
        $form->handleRequest($request);

        if ($form->isSubmitted()) {
            $em = $this->getDoctrine()->getManager();
            $em->persist($diplome);
            var_dump($em);
            $em->flush();

            return $this->redirectToRoute('app_member_profil');
        }

        return $this->render('AppMemberBundle:Default:Profil/Form/diplome.html.twig', array(
            'diplome' => $diplome,
            'form' => $form->createView(),
        ));
    }

ainsi que la vue diplome.html.twig

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

je souhaite exécuter l'action du controller directement dans une vue en utilisant

{{ render(controller('AppMemberBundle:Diplome:new')) }}

le formulaire d'affiche bien mais, lorsqu'on entre des informations et clique sur le bouton enregistrer, aucune information n'est enregistrer dans la BD, quelqu'un pourra t'il m'aider?


Viewing all articles
Browse latest Browse all 1542

Trending Articles