2013-10-16 9 views
7

Ich versuche, den Optionselementen benutzerdefinierte Attribute mithilfe des Formulargenerators symfony2 hinzuzufügen, im im nicht sicher, dass nativ möglich ist. Wenn es nicht ist, muss ich wissen, wie ich die Funktionalität hinzufügen würde.Hinzufügen von benutzerdefinierten Attributen zu Optionselementen in Symfony 2 Form Builder

Nehmen Sie das folgende Formular als Beispiel:

class FooForm extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('user','choice',array(
      'choices' => array(
       'designers'=>'designers', 
       '1'=>'mike', 
       '2'=>'carroll', 
       'developers'=>'developers', 
       '3'=>'chase', 
       '4'=>'brett', 
       '5'=>'jordan', 
      ) 
     )); 
    } 
} 

dann gemacht wird, wenn ich brauche es aussehen:

<select> 
    <option value="" disabled="disabled">designers</option> 
    <option value="1">mike</option> 
    <option value="2">carroll</option> 
    <option value="" disabled="disabled">developers</option> 
    <option value="3">chase</option> 
    <option value="4">brett</option> 
    <option value="5">jordan</option> 
</select> 

was würde ich wäre erwarten so etwas wie:

class FooForm extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('user','choice',array(
      'choices' => array(
       'designers'=>array(
         'label'=>'designers', 
         'attr'=>arrry('disabled'=>'disabled') 
       ), 
       '1'=>'mike', 
       '2'=>'carroll', 
       'developers'=>array(
         'label'=>'developers', 
         'attr'=>arrry('disabled'=>'disabled') 
       ), 
       '3'=>'chase', 
       '4'=>'brett', 
       '5'=>'jordan', 
      ) 
     )); 
    } 
} 

Aber das funktioniert nicht. Daher wird jede Hilfe sehr geschätzt.

+1

Müssen Sie Optionen auf Optionen setzen oder Ihre Optionen gruppieren? Es scheint, dass Sie versuchen, sie zu gruppieren. –

+0

Beide, ich fand einige Gruppierung Zeug in der Quelle nicht sicher, wie es geht. Aber ich muss auch einige "Daten-ID" -Attribute zu den Optionen hinzufügen. – Chausser

+2

Attribute auf Option werden nicht unterstützt .. Wenn Sie ein verschachteltes Array von Werten erstellen, können Sie Gruppe von Optionen erstellen (der Schlüssel ist der Name der Gruppe). Wenn Sie wirklich eine Möglichkeit zum Hinzufügen einer "Daten-ID" benötigen, sollten Sie wahrscheinlich einen neuen FormType erstellen, der den [Entity-Formulartyp] erweitert (http://symfony.com/doc/current/reference/forms/types/entity.html)) mit einer benutzerdefinierten Vorlage. –

Antwort

6

Es ist möglich für choice seit 2,7. Schauen Sie sich here an. Mit choice_attr.

+1

2 Jahre nachdem ich es gebraucht habe, fügen sie es hinzu. Danke für die Aktualisierung – Chausser

-1

Bitte verwenden Sie diesen Code unten für Attribut in Symfony2 gesetzt

->add('birthdate', 'date',array(
     'input' => 'datetime', 
     'widget' => 'single_text', 
     'attr' => array('class'=>'calendar') 
)) 
+0

Dies beantwortet die Frage nicht, ich suchte nach einem Möglichkeit, jeder Option in einem Auswahlfeld Attribute hinzuzufügen. Nicht auf dem übergeordneten Feld selbst. – Chausser

0

Möglicherweise müssen Sie eigene Widgets erstellen, die sich von 'Wahl' Widget.

So können Sie benutzerdefinierte Rendern für Ihre Optionen verwenden, und Sie können in den Attributen für jede Option einrichten, was Sie wollen.

NB: Ich sah gleich aus, aber habe einfach 'Wahl' verwendet, und in der Vorlage habe ich JS Var mit zusätzlichen Optionen hinzugefügt (Array mit Werten aus dem 'Auswählen', und zusätzliche Attribute angegeben). Ich verwende jedes zusätzliche Attribut basierend auf den Werten der Option beim Laden der Seite.