0

URLが配列に格納される「ホームページ」プロパティを持つクラスがあります。このフィールドを編集するための管理フォームを作成したいのですが、保存された値を表示したり、プロパティに新しい値を追加することを受け入れたりすることができません。私が得るのは空のフォームフィールドだけです。

パーシャルで値を単純に表示するのは以下のコードで簡単ですが、以前に保存されたすべての値で入力フィールドをレンダリングするにはどうすればよいですか?

<div class="sf_admin_form_row">
<label>
    <?php echo $form['homepages']->renderLabel('homepages') ?>
</label>
<?php foreach(sfOutputEscaper::unescape($form->getObject()->getHomepages()) as    $key=>$value): ?>
<div class="content"><?php echo $value ?></div>
<?php endforeach ?>
</div>

どんな助けでも大歓迎です。

4

1 に答える 1

1

私がやろうとしているのは、埋め込みフォームのコレクションを作成するか、フィールドを処理する独自のウィジェットを作成することです。

最初の解決策を試す場合は、フォーム クラス内でプロパティをシリアル化解除する必要があります。次に、配列を反復処理し、1 つの入力フィールドとフィールドの値を含む単純なフォームを埋め込みます。次に、(別のフォームを埋め込むことによって) 新しい値を追加するか、それらを削除するオプションを追加します。フィールドを適切に処理する (つまり、フィールドをシリアル化する) ように、フォームの保存メソッドも上書きする必要があります。

別の方法として、入力のコレクションの表示を適切に処理するウィジェット クラスを作成することもできます (値のシリアル化を解除し、各 URL の入力を表示します)。また、入力から値を取得してシリアル化するバリデータ クラスを作成する必要があります。

于 2014-01-16T10:19:05.097 に答える