2012-05-11 3 views
17

Wie kann ich Standardwert in sonata Admin-Bundle die Datenoption in configureFormFields Methode fehlt gesetztEinstellung Standardwert in Symfony2 Sonate Admin-Bündel

protected function configureFormFields(FormMapper $formMapper) 
{ 
    $formMapper 
     ->add('name', null, array('required' => true, 'data' => "my default value")) 
    ; 
} 

wie können Daten verwenden Attribute innerhalb Feld Standardwert setzen ?? ?

+0

Was ist der Feldtyp für Name? – Amit

Antwort

41

Ich nehme an, Sie haben wahrscheinlich schon das inzwischen gelöst, sondern als Hinweis auf alle anderen können Sie die getNewInstance() -Methode außer Kraft setzen und den Standardwert für das Objekt festgelegt:

public function getNewInstance() 
{ 
    $instance = parent::getNewInstance(); 
    $instance->setName('my default value'); 

    return $instance; 
} 
+0

Genau das, was ich gesucht habe. Vielen Dank! – Matheno

+0

@RobMasters Was ist, wenn das Attribut, das wir anzeigen müssen, tatsächlich eine Methode ist? – smarber

4

Sie können zuweisen, um das Eigentum des Unternehmens den Standardwert direkt:

class TheEntity 
{ 
    private $name = 'default name'; 
} 
+0

Warum wird diese Antwort abgelehnt? Es funktioniert und beinhaltet das geringste Überschreiben des Herstellercodes. Beste Antwort imho. – FallenSquirrel

+0

@FallenSquirrel es ist Arbeit, aber ich denke, es ist nicht die gewünschte Lösung als OP wahrscheinlich wollen, dass eine Lösung in Sonata getan werden und nicht die Klasseneigenschaft – GusDeCooL

5

Neben @RobMasters Lösung:

Wenn Sie eine Beziehung setzen wollen Sie eine Referenz aus dem en bekommen titymanager (anstelle des gesamten Objekts):

public function getNewInstance() 
{ 
    $instance = parent::getNewInstance(); 

    if ($this->hasRequest()) { 
     $branch = $this->getRequest()->get('branch', null); 

     if ($branch !== null) { 
      $entityManager = $this->getModelManager()->getEntityManager('MyBundle\Entity\Branch'); 
      $branchReference = $entityManager->getReference('MyBundle\Entity\Branch', $branch); 

      $instance->setBranch($branchReference); 
     } 
    } 
    return $instance; 
} 

ich das Beispiel in meinem Blog hinzugefügt: http://blog.webdevilopers.net/populate-resp-set-default-values-on-form-resp-object-or-instance-in-sonataadminbundle/

+0

Also was, wenn diese 11 kann nicht hart-codiert sein ?? – aderuwe

+0

Wo würde die Kennung resp. "11" kommen aus? – webDEVILopers

+0

Ja, meine Frage genau. – aderuwe

0

Für booleans, ist eine weitere Option, um einen data Wert innerhalb des ersten Feldes auf Ihre add Methode übergeben setzen , innerhalb von configureFormFields

nach einiger memtoring, mein Code (für eine Checkbox, die ich standardmäßig aktiviert haben wollte) am Ende der Suche nach etwas wie folgt aus:

protected function configureFormFields(FormMapper $formMapper) 
{ 
    $formMapper 
     ->add('name') 
     ->add('visible', null, ['label'=>'Visibility', 'data' => true ]) 
    ; 
} 

... die ein paar Zeilen am Anfang meiner Datei gespeichert, da ich dann die getNewInstance() Definition loswerden konnte.