フォームにデフォルト値を指定しようとしているので、フォームフィールドに値(空でも空でもない)があります。しかし、エンティティが編集されているときは、明らかにデフォルト値ではなく格納された値が表示されるはずです。symfonyフォームでデフォルト値を指定するにはどうすればいいですか
エンティティが構築の一部として初期化されるため、エンティティが新規でまだ永続化されていない場合、これらの値を設定する必要があります。
永続化状態よりもデフォルト値を使用するようにFormTypeに通知するにはどうすればよいですか?私が試したすべては、それがどちらか一方であることを示唆しているようです。
これはどのようにして行われますか?Symfony 3.2 + ???
EDIT |
コントローラ:
public function newAction (Request $request)
{
$quoteItem = new QuoteItem();
$form = $this->createForm('UniflyteBundle\Form\QuoteItemType', $quoteItem, ['allow_extra_fields' => true]);
$form->add('QuoteFlight', QuoteFlightType::class);
}
フォームタイプ:
public function configureOptions (OptionsResolver $resolver)
{
$resolver->setDefaults([
//'data' => new \UniflyteBundle\Entity\QuoteFlight()
'data_class' => QuoteFlight::class
]);
}
public function buildForm (FormBuilderInterface $builder, array $options)
{
$builder
->add('specMajorSetupCharge', null, [
//'empty_data' => QuoteFlight::SPEC_MAJOR_SETUP_CHARGE,
'data' => QuoteFlight::SPEC_MAJOR_SETUP_CHARGE,
'label' => '* Setups Charge'
])
// ...
}
あなたのコードはどのように見えますか? –
申し訳ありません - 私はそれを逃しました:) –
"データ"を明示的に設定すると、それは本質的にエンティティ値を書き込むよりもフォームに常に表示されます。エンティティが構築されるときにエンティティのデフォルト値が使用されない理由と、エンティティがDBからロードされるときと同じ理由を理解していません –