У меня есть следующий вид:Передача аргументов в Symfony 3 Форма configureOptions
class TestFormType extends AbstractType
{
protected $testArgument;
public function buildForm(FormBuilderInterface $builder, array $options)
{
if (isset($options['testArgument'])) {
$this->testArgument = $options['testArgument'];
}
$builder->add('textField', 'Symfony\Component\Form\Extension\Core\Type\TextType');
}
public function configureOptions(OptionsResolver $optionsResolver)
{
$optionsResolver->setRequired('testArgument');
$optionsResolver->setDefaults(
array(
'data_class' => get_class($this->testArgument)
)
);
}
}
Я передаю значение атрибута testArgument
через параметры формы (Symfony 3 модификации), но когда приходит, чтобы получить имя класса атрибута для установки 'data_class'
внутри метода configureOptions
, он всегда null
. В основном мне нужно зависеть от атрибута класса типа формы внутри метода configureOptions
. Может кто-то, пожалуйста, помогите мне здесь в правильном направлении?
Согласно php doc 'get_class' Возвращает имя класса, для которого' object' является экземпляром. Возвращает 'FALSE', если объект не является объектом. Если объект отсутствует в классе, возвращается имя этого класса. возможно, 'get_class' возвращает false, потому что вы не передали ему объект. –
Довольно точно configureOptions вызывается перед buildForm. Можете добавить некоторые утверждения для подтверждения. Что еще более важно, система форм создает только один объект определенного типа. Поэтому, если вы планируете иметь два разных экземпляра этого типа, каждый с другим классом данных, тогда он не будет работать вообще. – Cerad
@MohammadZareMoghadam: он всегда возвращает '' TestFormType'', поскольку 'configureOptions' работает до' buildForm' –