Wie werden die bereits ausgewählten Optionsfelder des Benutzers nach der Anmeldung bei symfony2 angezeigt?

Ich bin neu bei Symfony2 und benutze fosuserbundle. Ich habe ein kleines Projekt mit fosuserbundle erstellt, das eine Registrierung, eine Anmeldung, zwei Formulare mit Optionsfeldern zum Auswählen und Senden nach dem Anmelden oder Registrieren und eine Abmeldung enthält. Nachdem sich ein Benutzer angemeldet und die verschiedenen Optionsfelder ausgewählt und auf "Senden" geklickt hat, wird er zur "Erfolgsseite" weitergeleitet. Wenn sich der Benutzer das nächste Mal anmeldet, werden die zuvor ausgewählten Optionsfelder des Benutzers "NICHT" angezeigt, aber das Formular mit den aktivierten Standard-Optionsfeldern wird angezeigt. Ich wollte die bereits ausgewählten Optionsfelder des Benutzers anzeigen, nachdem sich der Benutzer angemeldet hat (falls er dies zuvor durch Anmelden ausgewählt hat) oder das Standardformular (für einen neuen Benutzer, der sich gerade angemeldet und keine Optionsfelder zuvor ausgewählt hat).

Dies ist die Entität "Abonnements": -

<?php

namespace InstituteEvents\StudentBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="subscriptions")
*/
class Subscriptions {

/**
 * @ORM\Id
 * @ORM\Column(name="id",type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @var integer
 * @ORM\Column(name="Event1", type="integer")
 * @ORM\ManyToOne(targetEntity="Events")
 * @ORM\JoinColumn(name="Event1", referencedColumnName="id")
 **/    
protected $event1;

/**
 * @var integer
 * @ORM\Column(name="Event2", type="integer")
 * @ORM\ManyToOne(targetEntity="Events")
 * @ORM\JoinColumn(name="Event2", referencedColumnName="id")
 **/

protected $event2;

/**
 * @var integer
 * @ORM\Column(name="Event3", type="integer")
 * @ORM\ManyToOne(targetEntity="Events")
 * @ORM\JoinColumn(name="Event3", referencedColumnName="id")
 **/
protected $event3;

/**
 * @ORM\OneToOne(targetEntity="Students")
 * @ORM\JoinColumn(name="id", referencedColumnName="id")
 **/
 protected $students;

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

/**
 * Set id
 *
 * @param integer $id
 * @return Subscriptions
 */
public function setId($id) 
{
    $this->id = $id;

    return $this;
}

/**
 * Set event1
 *
 * @param integer $event1
 * @return Subscriptions
 */
public function setEvent1($event1)
{
    $this->event1 = $event1;

    return $this;
}

/**
 * Get event1
 *
 * @return integer 
 */
public function getEvent1()
{
    return $this->event1;
}

/**
 * Set event2
 *
 * @param integer $event2
 * @return Subscriptions
 */
public function setEvent2($event2)
{
    $this->event2 = $event2;

    return $this;
}

/**
 * Get event2
 *
 * @return integer 
 */
public function getEvent2()
{
    return $this->event2;
}

/**
 * Set event3
 *
 * @param integer $event3
 * @return Subscriptions
 */
public function setEvent3($event3)
{
    $this->event3 = $event3;

    return $this;
}

/**
 * Get event3
 *
 * @return integer 
 */
public function getEvent3()
{
    return $this->event3;
}
}

Hinweis: - Es gibt 2 weitere Entitäten, nämlich: - 1. Studenten 2. Veranstaltungen. Aber es ist nicht so eng mit diesem Problem verbunden, daher habe ich es hier nicht erwähnt, um Platz zu sparen. Wie auch immer, die Beziehungen zwischen den verschiedenen Entitäten wurden richtig eingestellt

Dies ist der "SubscriptionsType": -

<?php

namespace InstituteEvents\StudentBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;


class SubscriptionsType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder

->add('event1', 'choice', array('choices' => array('1' => 'Tourism', '2' => 'Food party',     '3'     => 'South korean food', '4' => 'Cooking', '5' => 'None of the above'), 'data' => '5', 'expanded' => true, 'multiple' => false))

->add('event2', 'choice', array('choices' => array('6' => 'Cricket', '7' => 'Football', '8' => 'Hockey', '9' => 'Baseball', '10' => 'Polo', '5' => 'None of the above'), 'data' => '5', 'expanded' => true, 'multiple' => false))

->add('event3', 'choice', array('choices' => array('11' => 'Game 1', '12' => 'Game 2', '13' => 'Game 3', '14' => 'Game 4', '15' => 'Game 5', '5' => 'None of the above'), 'data' => '5', 'expanded' => true, 'multiple' => false))

->add('register', 'submit');
}

public function getName()
{
    return 'subscriptions';
}
}

Dies ist der Controller (Welcher Code muss in diesen Controller geschrieben werden, um das obige Problem zu lösen ???): -

namespace InstituteEvents\StudentBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use InstituteEvents\StudentBundle\Entity\Subscriptions;
use InstituteEvents\StudentBundle\Form\Type\SubscriptionsType;
use Symfony\Component\HttpFoundation\Request;

class DefaultController extends Controller {

 /**
 * This action displays the form for the events of day 1.
 * 
 * @param Request $request
 * @return A Confirmation page on success
 */
public function eventsoneAction(Request $request) {

    //Get current time and date

     date_default_timezone_set('Europe/Paris');
     $current_date = date('Y/m/d h:i:s a', time());

    //Set expiration date

    $deadline1 = $this->container->getParameter('deadline_day1');
    $date=date_create($deadline1,timezone_open("Europe/Paris"));

    $em = $this->getDoctrine()->getManager();
    $subscriptions = new Subscriptions();

    $form = $this->createForm(new SubscriptionsType, new Subscriptions());
    $form->handleRequest($request);

    if ($form->isValid()) {
    //Save to the Database    
    $subscriptions = $form->getData();

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

      return $this->redirect($this->generateUrl('institute_events_student_eventsregistered'));
    }

     if($current_date > date_format($date,"Y/m/d h:i:s a")) {
       return $this->render('InstituteEventsStudentBundle:Default:registrationsclosed.html.twig');
       }
     else {
          $form = $this->createForm(new SubscriptionsType, new Subscriptions());

          return $this->render('InstituteEventsStudentBundle:Default:eventsday1.html.twig', array('form' => $form ->createView()));
     }
}

/**
 * This action displays the Confirmation page on success.
 * 
 * @param Request $request
 * @return A Confirmation page on success
 */
public function eventsregisteredAction() {
    return $this->render('InstituteEventsStudentBundle:Default:eventsregistered.html.twig');
}

}

Im folgenden Controller versuche ich, die Ereignisse (dh die Ereignis-ID), die der Benutzer aus der Datenbank ausgewählt hat, abzurufen und an den "Formulartyp" zu übergeben, damit er diese Ereignisse (dh die Ereignis-ID) verwendet und das Original des Benutzers anzeigt Optionsfeld ausgewähltes Formular nach der Anmeldung. Es wird jedoch ein Fehler ausgegeben. Kann mir jemand helfen, wie man dem angemeldeten Benutzer seine / ihre ausgewählten Werte der Optionsfelder anzeigt ???

 <?php

namespace InstituteEvents\StudentBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use InstituteEvents\StudentBundle\Entity\Subscriptions;
use InstituteEvents\StudentBundle\Form\Type\SubscriptionsType;
use Symfony\Component\HttpFoundation\Request;

class DefaultController extends Controller {

 /**
 * This action displays the form for the events of day 1.
 * 
 * @param Request $request
 * @return A Confirmation page on success
 */
public function eventsoneAction(Request $request) {

    //Get current time and date

     date_default_timezone_set('Europe/Paris');
     $current_date = date('Y/m/d h:i:s a', time());

    //Set expiration date

    $deadline1 = $this->container->getParameter('deadline_day1');
    $date=date_create($deadline1,timezone_open("Europe/Paris"));

    $em = $this->getDoctrine()->getManager();
    $subscriptions = new Subscriptions();

    //Check if events already selected
    $repository = $this->getDoctrine()
            ->getRepository('InstituteEventsStudentBundle:Subscriptions');

    $query = $repository->createQueryBuilder('p')
             ->select('p.event1','p.event2','p.event3','p.event4')
             ->where('p.id = p.getId()')
             ->getQuery();

    $subscriptionsreg = $query->getResult();

    $form = $this->createForm(new SubscriptionsType($subscriptionsreg), new Subscriptions());
    $form->handleRequest($request);

    if ($form->isValid()) {
    //Save to the Database    
    $subscriptions = $form->getData();

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

      return $this->redirect($this->generateUrl('institute_events_student_eventsregistered'));
    }

     if($current_date > date_format($date,"Y/m/d h:i:s a")) {
       return $this->render('InstituteEventsStudentBundle:Default:registrationsclosed.html.twig');
       }
     else {
          $form = $this->createForm(new SubscriptionsType, new Subscriptions());

          return $this->render('InstituteEventsStudentBundle:Default:eventsday1.html.twig', array('form' => $form ->createView()));
     }
}

/**
 * This action displays the Confirmation page on success.
 * 
 * @param Request $request
 * @return A Confirmation page on success
 */
public function eventsregisteredAction() {
    return $this->render('InstituteEventsStudentBundle:Default:eventsregistered.html.twig');
}

}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage