2012-10-25 5 views
16

Ich verwende symfony2 und habe ein Formular, um die Beziehung eines Benutzers zu einigen Regeln zu speichern. Diese Regeln werden vom Administrator des Unternehmens festgelegt. In diesem Formular, nachdem ich einen Benutzer für die Aktualisierung ausgewählt habe, muss ich auswählen, dass dieser Benutzer berechtigt ist.Symfony 2 Erstellen Sie ein Formularfeld mit 2 Eigenschaften

Das Problem ist, dass ich mehr als eine Regel mit dem gleichen Namen haben kann (es ist eine andere Entität), aber die Werte sind unterschiedlich. Also, wenn ich die selectbox bauen muss ich den Namen zeigen und den Wert wie:

  1. Anzahl der Artikel - 10
  2. Anzahl der Artikel - 20
  3. Wert des Elements - 200
  4. Wert von der Artikel - 500

Aber jetzt kann ich nur zeigen, ohne die "- $ value" den Code mit Gebrüll:

$form = $this->createFormBuilder()->add('myinput', 'entity', array(
        'class' => 'myBundle:Rule', 
        'property' => 'childEntity.name', 
        'label' => 'Filas Permitidas', 
        'expanded' => false, 
        'multiple' => true, 
        'choices' => $this->getDoctrine() 
          ->getRepository('MyBundle:Rule') 
          ->findAll(), 
        'required' => true, 
       ))->getForm(); 

Also, als Eigenschaft wollte ich $myEntity->getChildEntity()->getName() und die $myEntity->getValue() bekommen.

Gibt es einen Weg, dies zu tun?

Antwort

31

Ja, eine getUniqueName() Methode in der Entity-Klasse definieren wie:

public function getUniqueName() 
{ 
    return sprintf('%s - %s', $this->name, $this->value); 
} 

und bearbeiten Sie die property Form Option:

'property' => 'childEntity.uniqueName', 

Sie können auch die property Option weglassen und die __toString() Methode gleiche definieren Weg, um die Einstellung der property Option in jeder Form nicht zu wiederholen.

+1

Einfach perfekt! Vielen Dank! – PedroHCan

+0

Spot auf! Glückwunsch.. – medina