2012-10-31 7 views
6

Wie soll ich read-only Felder mit Symfony Form-Komponente rendern? Dieseform symfony2 Nur lesen

ist, wie ich versuche, dass ohne Erfolg zu tun:

$builder 
    ->add('descripcion','text',array('read_only' =>'true')) 
    ->add('pcompra','text',array('read_only' =>'true')) 
    ->add('pventa','text',array('read_only' =>'true')) 
    ->add('iva','text',array('read_only' =>'true')) 
    ->add('marca','text',array('read_only' =>'true')) 
    ->add('stock','text',array('read_only' =>'true')) 
    ->add('familia','text',array('read_only' =>'true')) 
    ->add('proveedor','text',array('read_only' =>'true')); 
} 
+0

Wenn eine Antwort Lösung ist, um dieses Problem zu lösen, bitte als akzeptiert markieren :) –

Antwort

0

Wenn familia und proveedor Beziehungen zu anderen Unternehmen denken, dass ich sie nicht Textart sein sollte. Versuchen Sie, ihre Typen aufzuheben oder zu Einheit Typ zu ändern und zu überprüfen, ob es funktionierte.

7

Sie haben Ihr schreibgeschütztes Attribut zu einem String erklärt, es muss ein boolescher Wert sein.

entfernen Sie die Anführungszeichen um true

wie folgt aus:

->add('descripcion','text',array('read_only' => true)) 

wahr, ohne Anführungszeichen.

3

read_only ist seit Symfony 2.8 veraltet. Bitte verwenden Sie stattdessen readonly. Und bieten boolean Wert für dieses Attribut

->add('','text',array('readonly' => true)) 
2

Update: seit Symfony 3.0, die Nur-Lese- Wert sollte in der attr Option eingestellt werden. http://symfony.com/doc/2.8/reference/forms/types/form.html#read-only

Die Option deaktiviert Option kann stattdessen verwendet werden.

+4

"disabled" und "readonly" sind NICHT das gleiche und können nicht austauschbar verwendet werden !!! Während beide auf ähnliche Weise wie der Benutzer rendern, wird ein schreibgeschütztes Feld Teil des Posts sein, während ein deaktiviertes Feld nicht. –

10

Sofern alle Antworten mit dieser Ausnahme auf Symfony am Ende 3:

Uncaught PHP Exception Symfony \ Component \ OptionsResolver \ Exception \ UndefinedOptionsException:. „Die Option "read_only" existiert nicht

der richtige Weg, dies zu tun ist, den Vorteil von attr Eigenschaft auf dem Feld zu nehmen:

->add('descripcion', TextareaType::class, array(
    'attr' => array(
     'readonly' => true, 
    ), 
)); 
+0

Upvote. Ich komme auch aus dem Iran. Kann ich Ihren Telegramm-Account haben? Ich will dir etwas sagen. – Shafizadeh

+0

Salam, hier bist du: @peyman_mohamadpour – Trix

0

Lassen Sie mich etwas hinzufügen, dass die anderen Antworten nicht helfen, mit zu verwalten. Die Behandlung als Feld, aber "zwicken", um die Ausgabe zu deaktivieren, kann in vielen Fällen funktionieren. Es ist jedoch zumindest schwierig, in einigen Formaten zu rendern, die die Ausgabe vollständig verhindern (d. H. Als Etikett darstellen).

Wie löst man das? Was ich getan habe, ist, das Feld als HiddenType zu definieren und in der Vorlage zu rendern, indem {{ form.vars.value.myfield }} oder {{ item.myfield }} "item" als das Entity-Objekt verwendet wird, eingeschlossen in was auch immer Sie denken können, wie jedes andere HTML-Element.