0
私は次の形式を持っている:私は、フォームのオプション(symfonyの3つの修正)を経由してtestArgument
属性の値を渡しています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)
)
);
}
}
が、クラス名を取得するために来ているときconfigureOptions
メソッド内に'data_class'
を設定する属性の値は、常にnull
です。基本的には、私はconfigureOptions
メソッド内のフォームタイプのクラス属性に依存する必要があります。誰かが正しい方向に私を助けてもらえますか?
create
方法自体から
configureOptions
方法で依存関係に合格しなければならなかった
php docによると 'get_class'は' object'がインスタンスであるクラスの名前を返します。 objectがオブジェクトでない場合、 'FALSE'を返します。 クラス内でobjectが省略された場合は、そのクラスの名前が返されます。おそらく 'get_class'はオブジェクトを渡さないのでfalseを返します。 –
buildFormよりも前にかなりのconfigureOptionsが呼び出されます。確認するためにいくつかのステートメントを追加するかもしれません。さらに重要なのは、フォームシステムは特定のタイプのオブジェクトを1つだけ作成することです。したがって、このタイプの2つの異なるインスタンスがあり、それぞれが異なるdata_classを持つことを計画している場合は、まったく動作しません。 – Cerad
@MohammadZareMoghadam: '' BuildForm'の前に 'configureOptions'が実行されるので常に' 'TestFormType''を返します。 –