2013-09-05 22 views
7

Su un metodo buildForm di classe di modulo (derivato) è possibile impostare l'azione di tale modulo? Quello che voglio fare è simile al metodo setAction che posso usare per la costruzione di un modulo incorporato:Posso modificare un'azione Form Class su build?

$form = $this->createFormBuilder() 
    ->setAction($this->generateUrl('my_action')) 
    ->add('field', 'text') 
    ->add('button', 'submit'); 

Voglio dire, è il setAction un equivalente per formare le classi?

risposta

32

Si ottiene l'accesso allo stesso costruttore modulo nel metodo buildForm, quindi basta chiamare il setAction su di esso funzionerà:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder->setAction($path); 
} 

La domanda è come si passa il $path al vostro tipo di modulo. Uno dei modi sarebbe passarlo come opzione quando si crea il modulo. Ma se stai passando lo $path comunque, perché non impostare lo stesso action?

$form = $this->createForm(new MyType(), $object, array(
    'action' => $this->generateUrl('my_action'), 
)); 

Un altro modo sarebbe quello di iniettare il router per il tipo di modulo e utilizzarlo per generare l'URL, ma non credo che sia una buona idea per fare questo tipo di decisioni in un tipo di modulo.

+0

Perfetto, ha funzionato! Grazie! –

+0

Grande. Non dimenticare di upvotare e spuntare la risposta. ;) –

+0

Non riesco ancora a effettuare l'aggiornamento, in quanto la mia reputazione continua a non permetterlo. quando lo permetterà, lo farò bene? –