Допустим, у вас есть форма типа FileType следующим образом:
<?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';
}
}
Вы можете использовать ее в своем контроллере следующим образом:
$form = $this->createForm(new FileType(), $document);
Где $ document - это объект, содержащий одно поле ( name ).Теперь, если вам нужно добавить поле к объекту формы в другой функции, вы можете расширить FileType , чтобы добавить нужное поле;Например, если вы хотите отредактировать поле имени, но хотите сохранить предыдущее состояние, добавьте поле 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));
}
}
Теперь вы можете использовать расширенную форму, например:что:
$form = $this->createForm(new FileEditType(), $document);
И измените значение поля следующим образом:
$form->get('original_name')->setData($document->name);
Надеюсь, это поможет somenone: o)