2016-07-13 6 views
1

ich eine Form haben, die erlauben sollte ein Element (Gerät) zu einer Kategorie (Marke) hinzuzufügen. Unten ist ein Teil des Controllers, der das Formular erstellt (das $ Markending funktioniert nicht, aber ich werde das später herausfinden). Darunter ist der Code, der mein Formular erstellt.Symfony3: Pass Wert bilden EntityType der ausgewählte Wert Standard sein

Ich möchte meine Select-Box (die eine EntityType von Marke ist und zeigt alle möglichen Marken) auch ausgewählt Wert einen Standard zu zeigen, basierend auf einer Variablen durch die Steuerung weitergegeben.

Zwei Fragen:

  1. , wo ich diesen Wert nach unten passieren kann?
  2. Wie kann ich eine Standardoption für das EntityType-Auswahlfeld festlegen? Ich habe erwartet, dass es sich um "Daten" handelt, aber selbst eine Nummer hart zu codieren wird nicht funktionieren.

Dies ist der Controller Bit:

public function createDevice(Request $request, $brand) { 
    $device = new Device(); 
    $form = $this->createForm(DeviceType::class, $device); // where do I pass the value of the default option? 
    $form->handleRequest($request); 

und der Typ:

class DeviceType extends AbstractType { 

    public function buildForm(FormBuilderInterface $builder, array $options) { 

     $builder 
      ->add('brand', EntityType::class, array(
       'class' => 'AppBundle:Brand', 
       'choice_label' => 'name', 
       'choice_value' => 'id', 
       'data' => '2' // does not set default value to second item! 
+0

Hallo, in Ihrem Code oben können Sie nicht in $ $ Marke als ein Objekt über TWIG übergeben; aber Sie könnten über den Controller. Ich versuche nur dir zu helfen. Wenn es sich um eine Marken-ID handelt, können Sie diese in einem QueryBuilder verwenden. –

+0

unsicher, was du meinst? Ich versuche nicht, Objekte an Zweige zu übergeben, denke ich. Ich bin ein bisschen neu für all das :) – bluppfisk

+0

Hallo dort bluppfisk. Sie haben den Code mit der Funktion 'createDevice (Anfrage $ Anfrage, $ Marke)' und die Variable '$ Marke'. Versuchen Sie, ein Markenobjekt an die Funktion zu übergeben? Wenn ja, muss es ein Objekt sein. –

Antwort

1

gerade gesetzt Marke in Gerät.

$em = $this->getDoctrine()->getManager(); 
$brand = $em->getRepository('AppBundle:Brand')->find(2); 
$device = new Device(); 
$device->setBrand($brand); 
+0

ja das tut es, danke! – bluppfisk