2016-06-18 2 views
1

Ich habe die folgende Situation: Ich habe zwei Dropdown-Listen, die beide Werte auf der gleichen db-Spalte gespeichert werden müssen. Meine Frage ist, wie kann ich dies auf meine buildForm Methode sowie auf html.twig? Ich möchte Ihnen allen für Ihre Hilfe danken. Hier sind meine Codes:Verwenden mehrere Dropdown-Listen zum Füllen einer Spalte in db mit PostType-Formular in Symfony 3

Entity

* @var string 
* 
* @ORM\Column(name="Diningroom", type="text") 
*/ 
private $diningroom; 
/** 
* @var string 
* 
* @ORM\Column(name="Kitchen", type="text") 
*/ 
private $kitchen; 
/** 
* @var string 
* 
* @ORM\Column(name="Office", type="text") 
*/ 
private $office; 
/** 
* @var string 
* 
* @ORM\Column(name="BedRoom", type="text") 
*/ 
private $bedroom; 

buildForm

 ->add('firstName') 
     ->add('lastName') 
     ->add('email') 
     ->add('telephone') 
     ->add('county') 
     ->add('city') 
     ->add('street') 
     ->add('postcode') 
     ->add('floor', 'entity') 
     ->add('elevator', 'entity') 
     ->add('diningroom') 
     ->add('kitchen') 
     ->add('office') 
     ->add('bedroom') 
     ->add('bathrooms') 
     ->add('boxes') 
     ->add('message') 
     ->add('packing') 
     ->add('personrequired') 
     ->add('submit', SubmitType::class, array(
      'label' => 'Get Quotation' 
    //  'class' => 'btn btn-danger pull right' 
     )) 

-Controller

public function createAction(Request $request) 
{ 
    //create a new post 
    $removalPost = new Post(); 
    $form = $this->createForm(PostType::class, $removalPost, [ 
    'action' => $request->getUri() 
]); 

    $form->handleRequest($request); 

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

     $removalPost->setAuthor($this->getUser()); 
     $removalPost->setDate(new \DateTime()); 
     $em->persist($removalPost); 
     $em->flush(); 
     return $this->redirect($this->generateUrl('RemovalsUK_view', 
      ['id' => $removalPost->getId()])); 
    } 
    return $this->render('RemovalsUKBundle:Post:create.html.twig', array 
    ('form' => $form->createView() 
    )); 
} 

Mein HTML

    <div class="row"> 
           <div class="col-md-6 col-sm-6 col-xs-6"> 
            <div class="form-group"> 
             <label>Table</label> 
             <select class="form-control required" name="kitchen_table" id="kitchen_table"> 
              <option value="" selected>Quantity</option> 
              <option value="0">0</option> 
              <option value="1">1</option> 
              <option value="2">2</option> 
              <option value="3">3</option> 
              <option value="4">4</option> 
             </select> 
            </div> 
           </div> 
           <div class="col-md-6 col-sm-6 col-xs-6"> 
            <div class="form-group"> 
             <label>Seat</label> 
             <select class="form-control required" name="kitchen_seat" id="kitchen_seat"> 
              <option value="" selected>Quantity</option> 
              <option value="0">0</option> 
              <option value="1">1</option> 
              <option value="2">2</option> 
              <option value="3">3</option> 
              <option value="4">4</option> 
             </select> 
            </div> 
           </div> 
          </div> 

Was möchte ich zum Beispiel zu tun ist, ist in Küche Spalte legen Sie die Werte (Anzahl) aus Tabelle und Sitz ich jede beliebige schätzen würde, diese Frage zu klären, . Danke

Antwort

0

ich würde sagen create getter für kitchen_table und kitchen_seat, um das Formular zu füllen. Für speichern ist die Frage, in welchem ​​Format Sie speichern möchten?

$data = $form->getData(); 
$removalPost->setKitchen($data['kitchen_table'].'_'.$data['kitchen_seat']); 

und dies sollte eingestellt werden. Aber Sie haben auch ein Problem, indem Sie Ihr Formular einrichten. Das Formular sollte zu Ihren Feldern passen sonst können Sie die Daten nicht über das Formular bekommen, Sie müssen die Daten über die Anfrage bekommen ...

+1

Danke ich werde versuchen Ihre Lösung, und ja werde ich sicherstellen, dass mein Formular wird passen Sie die Felder, danke. – prezequias

Verwandte Themen