2016-04-19 17 views
-1

Ich arbeite an Symfony2.8 und versuche, das Label des ChoiceType (Radiobutton) wie gewünscht anzuzeigen (nicht die Lehre von der Variablen, die zum Speichern der Eingabedaten zB eT1 oder eT2 verwendet). Gibt es dafür eine Syntax oder muss ich den Variablennamen unbedingt in den Namen ändern, den ich zB anzeigen möchte? event1 oder event2. Was passiert außerdem, wenn ich "Event für Zeitfenster 1 auswählen" statt nur Ereignis1 anzeigen möchte?Wie ändere ich die Beschriftung des Eingabefeldes "choiceType"?

<?php 

    namespace AppBundle\Controller; 

    use AppBundle\Entity\events; 
    //use AppBundle\Entity\eventtype; 
    use AppBundle\Entity\users; 
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
    use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
    use Symfony\Component\HttpFoundation\Request; 
    use Symfony\Component\HttpFoundation\Response; 
    use Symfony\Component\Form\Extension\Core\Type\SubmitType; 
    use Symfony\Component\Form\Extension\Core\Type\ChoiceType; 

    class DefaultController extends Controller { 

     /** 
     * @Route("/home", name="homepage") 
     */ 
     public function indexAction(Request $request) { 
      $events = new events(); 

      $form = $this->createFormBuilder($events) 
        ->add('eT1', ChoiceType::class, array(
         'choices' => array(
          'Poker' => 1, 
          'Chess' => 2, 
          'Cricket' => 3, 
          'Marbles' => 4, 
          'Football' => 5, 
         ), 
         'choices_as_values' => true, 
         'expanded' => true, 
         'multiple' => false, 
        )) 
        ->add('eT2', ChoiceType::class, array(
         'choices' => array(
          'Poker' => 1, 
          'Chess' => 2, 
          'Cricket' => 3, 
          'Marbles' => 4, 
          'Football' => 5, 
         ), 
         'choices_as_values' => true, 
        'expanded' => true, 
         'multiple' => false, 
         )) 
        ->add('save', SubmitType::class, array('label' => 'Submit')) 
        ->getForm(); 

      if ($request->isMethod('POST')) { 
       $form->submit($request); 

       if ($form->isValid()) { 
        // perform some action, eg. persisting the data to database... 
        $user = $this->container->get('security.context')->getToken()->getUser(); 
        $events->setuser($user); 
    //    var_dump($id); 
    //    exit; 
        //$events->setuserID($id); 


        $em = $this->getDoctrine()->getManager(); 

        // tells Doctrine you want to (eventually) save the Product (no queries yet) 
        $em->persist($events); 

        // actually executes the queries (i.e. the INSERT query) 
        $em->flush(); 
        return $this->redirectToRoute('homepage'); 
       } 
      } 

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

Unten ist das Unternehmen Ereignisse

<?php 

namespace AppBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* events 
* 
* @ORM\Table(name="events") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\eventsRepository") 
*/ 
class events { 

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

    /** 
    * @var int 
    * 
    * @ORM\Column(name="user_id", type="integer") 
    */ 
    protected $user_id; 

    /** 
    * @var int 
    * 
    * @ORM\Column(name="ET1", type="integer") 
    */ 
    protected $eT1; 

    /** 
    * @var int 
    * 
    * @ORM\Column(name="ET2", type="integer") 
    */ 
    protected $eT2; 

    /** 
    * @ORM\ManyToOne(targetEntity="users", inversedBy="multievents") 
    * @ORM\JoinColumn(name="user_id", referencedColumnName="id") 
    */ 
    private $singleUser; 

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

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

    /** 
    * Set user 
    * 
    * @param integer $user 
    * @return events 
    */ 
    public function setUser($user) { 
     $this->singleUser = $user; 
    } 


    /** 
    * Set eT1 
    * 
    * @param integer $eT1 
    * @return events 
    */ 
    public function setET1($eT1) { 
     $this->eT1 = $eT1; 

     return $this; 
    } 

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

    /** 
    * Set eT2 
    * 
    * @param integer $eT2 
    * @return events 
    */ 
    public function setET2($eT2) { 
     $this->eT2 = $eT2; 

     return $this; 
    } 

    /** 
    * Get eT2 
    * 
    * @return integer 
    */ 
    public function getET2() { 
     return $this->eT2; 
    } 
} 
+0

Warum nicht einfach die [ 'label'] eingestellt (https://symfony.com/doc/current/reference/forms/types/choice.html# Label) durch die 'ChoiceType' Optionen? – kero

+0

Haben Sie die Option "Choice_label" versucht? – Letsrocks

+0

@kingkero Ich habe versucht {{form_label (form.name, 'Choose Event')}} in der Zweigdatei wie in http://symfony.com/doc/current/reference/forms/types/choice.html#expanded empfohlen gibt Fehler - Methode "Name" für das Objekt "Symfony \ Component \ Form \ FormView" existiert nicht in default/index.html.twig bei Zeile 6 – utkarsh2k2

Antwort

0

Symfony Dokumentation Nach Sie HERE, dass im Fall lesen können, das zu tun:

Typ: ZeichenfolgeStandard: Das Label ist "erraten" von Feldname

Legt die Bezeichnung fest, die beim Rendern des Felds verwendet wird. Wenn Sie auf false setzen, wird die Beschriftung unterdrückt. Das Etikett kann auch direkt in der Vorlage festgelegt werden:

{{ form_label(form.name, 'Your name') }} 
+0

Ich versuchte {{form_label (form.name, 'Choose Event')}} in der Zweigdatei wie in symfony.com/doc/current/reference/forms/types empfohlen/... gibt Fehler - Die Methode "Name" für das Objekt "Symfony \ Component \ Form \ FormView" existiert nicht in default/index.html.twig in Zeile 6 – utkarsh2k2

+0

Ich habe 'label' => 'Choose Event' in den Controller eingefügt selbst. Funktioniert jetzt gut. Vielen Dank :) – utkarsh2k2

Verwandte Themen