10

symfony2フォーム要素の値を設定する必要があります。Controllersアクション内でdoctrine2エンティティ、Symfony \ Component \ Form \ AbstractType、およびcreateForm()メソッドを使用しています。

$saleDataForm = $this->createForm(new SaleType(), $sale);

では、そのフォームから要素を取得するにはどうすればよいですか。また、その値を設定するにはどうすればよいですか。私はこのようなことをしたいのですが、うまくいきません:

$saleDataForm->get('image')->setValue('someimapge.jpg');

参考:フィールドを正しくレンダリングするには、これを行う必要があります(このアプローチを使用すると、画像フィールドは常に空になり、アップロードされた画像のプレビューを表示するには、 imagePathのコンテンツに設定する必要があります)

4

3 に答える 3

14

より正確な答えを得るには、このフォームで使用するエンティティを含めて、ゲッターとセッターを確認できるようにする必要があります。しかし、あなたの質問に基づいて、これはうまくいくはずです: コントローラーの内部でこれを行います:

$saleDataForm->getData()->getImage()->setValue('someimage.jpg');
$form->setData($form->getData());

これは、フォームがすでに作成されている場合です。

$saleDataForm = $this->createForm(new SaleType(), $sale);
$saleDataForm->getData()->getImage()->setValue('someimage.jpg');
$form->setData($form->getData());

データを取得するには、次を使用します。

$saleDataForm->getData()->getImage()->getValue();
于 2012-11-06T11:56:33.133 に答える
5

MatsRietdijkに感謝します、あなたは私を助けてくれました、しかし私はこれにコードを変更しなければなりませんでした

$form = $this->createForm(new SaleType(), $sale);
$form->getData()->setImage('someimage.jpg');
$form->setData($form->getData());
于 2014-01-10T08:59:04.150 に答える
2

ファイルアップロードフィールドに入力しようとすると、それは間違った考えです。自問してみてください:どのようなデータがそこにあるべきですか?ユーザーが画像をアップロードすると、このフィールドにローカルシステム上の画像へのパスが表示されます。ただし、ファイルがアップロードされた後、名前と場所を変更するため、このパスに関する情報は必要なく、保持しないだけです。

適切な方法は、画像の下(または上、またはどこにでも;))のアップロードフィールドを空のままにしておく必要があります。次に、フォームが送信された後、フィールドが空でない場合は、編集された画像を変更する必要があります。

于 2012-11-06T12:09:49.893 に答える