Diciamo che avete un modulo di tipo FileType come segue:
<?php
namespace EventFlowAnalyser\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class FileType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name', 'text', array('label' => 'Name'));
}
public function getName()
{
return 'file';
}
}
Si può usare nel controller come questo:
$form = $this->createForm(new FileType(), $document);
Dove $ documento è un oggetto contenente un campo (nome). Ora, se è necessario aggiungere un campo all'oggetto modulo in un'altra funzione, è possibile estendere lo FileType per aggiungere il campo necessario; per esempio se vuoi modificare il campo del nome ma vuoi comunque tenere traccia dello stato precedente, aggiungi un campo original_name.
<?php
namespace EventFlowAnalyser\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use EventFlowAnalyser\Form\EventListener\EditFileFieldSubscriber;
class FileEditType extends FileType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
parent::buildForm($builder, $options);
$builder->add('original_name', 'hidden', array('mapped' => false));
}
}
Ora, è possibile utilizzare il modulo esteso così:
$form = $this->createForm(new FileEditType(), $document);
e modificare il valore del campo così:
$form->get('original_name')->setData($document->name);
Spero che questo vi aiuterà somenone: o)
fonte
2012-11-27 21:17:25
Grazie, sembra la soluzione di cui ho bisogno. – DavidW