2012-10-31 12 views
6

Come devo eseguire il rendering dei campi read-only usando il componente del modulo Symfony?form symfony2 read only

questo è come mi sto cercando di farlo senza alcun risultato:

$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

se una risposta è una soluzione per risolvere questo problema, contrassegnare come accettato :) –

risposta

0

Se familia e Fornitore sono relazioni con altre entità penso che non dovrebbero essere di tipo testo. Prova ad annullare i loro tipi o cambia in tipo di entità e controlla se ha funzionato.

7

Hai dichiarato l'attributo di sola lettura a una stringa, deve essere un valore booleano.

rimuovere le virgolette attorno true

come questo:

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

vero, senza le virgolette.

3

read_only è obsoleto da Symfony 2.8. Quindi, per favore usa a sola lettura. E fornire valore booleano per questo attributo

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

Aggiornamento: dal Symfony 3.0, il sola lettura valore deve essere impostato nell'opzione attr. http://symfony.com/doc/2.8/reference/forms/types/form.html#read-only

L'opzione disabilitata può anche essere usato al posto.

+4

"disabled" e "readonly" NON sono la stessa cosa e non possono essere utilizzati in modo intercambiabile !!! Mentre entrambi eseguono il rendering in modo simile all'utente, un campo di sola lettura farà parte del post, mentre un campo disabilitato non lo farà. –

10

fornito risposte tutte finiscono con questa eccezione sul Symfony 3:

Uncaught PHP Eccezione Symfony \ Component \ OptionsResolver \ Exception \ UndefinedOptionsException:. "L'opzione "read_only" non esiste

il modo giusto per farlo è quello di approfittare delle attr proprietà sul campo:

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

Voto positivo. Inoltre, vengo anche dall'Iran. Posso avere il tuo account Telegram? Voglio dirti qualcosa. – Shafizadeh

+0

Salam, qui: @peyman_mohamadpour – Trix

0

Lasciatemi aggiungere qualcosa che le altre risposte non hanno aiutato a gestire. Il trattamento come campo ma "modificare" per disabilitare l'edizione potrebbe funzionare in molti casi. Tuttavia, è almeno difficile eseguire il rendering in alcuni formati che impediscono completamente l'edizione (ad esempio, il rendering come etichetta).

Come risolvere questo? Quello che ho fatto è definire il campo come HiddenType, e nel modello renderizzare usando {{ form.vars.value.myfield }} o {{ item.myfield }} prendendo "oggetto" come oggetto entità, racchiuso in qualsiasi cosa tu possa pensare, come qualsiasi altro elemento HTML.