0

モデルの配列があり、それらはすべて 1 つのクラスのインスタンスです。配列のモデルに対応するサブフォームを含むフォームを作成する必要があります。

CJuiTabs でサブフォームをレンダリングできる小さな拡張機能を作成したので、CForm を使用する必要があります。現時点で使用されているコードでは、配列からモデルのクラスの名前がプレフィックスとして付けられるため、POST パラメーター名が間違っています。

以下に、生成された HTML コードのスニペットを示します。これらの YPageInfo[...] 名前付き入力を参照してください。これが問題です。このプレフィックスを持つ入力のセットは 1 つだけがサーバーによって受信されます。

<div style="visibility:hidden"><input type="hidden" value="1" name="yform_20bd4d2c" id="yform_20bd4d2c" /></div>
<div class="row field_name">
<label for="YPageRevision_name">Name</label>
<input name="YPageRevision[name]" id="YPageRevision_name" type="text" maxlength="45" />

</div>
<div class="row field_parent_id">
<label for="YPageRevision_parent_id">Parent Id</label>
<input id="YPageRevision_parent_id_hidden" name="YPageRevision[parent_id]" type="hidden" /><input id="YPageRevision_parent_id" type="text" value="" name="autocomplete-field" />

</div>
<div id="yw1">
<ul>
<li><a href="#enSubFormTab" title="enSubFormTab">en</a></li>
<li><a href="#ruSubFormTab" title="ruSubFormTab">ru</a></li>
</ul>
<div id="enSubFormTab"><div class="row field_title">
<label for="YPageInfo_title" class="required">Title <span class="required">*</span></label>
<input name="YPageInfo[title]" id="YPageInfo_title" type="text" maxlength="256" />

</div>
<div class="row field_content">
<label for="YPageInfo_content" class="required">Content <span class="required">*</span></label>
<textarea name="YPageInfo[content]" id="YPageInfo_content"></textarea>

</div>


</div>
<div id="ruSubFormTab"><div class="row field_title">
<label for="YPageInfo_title" class="required">Title <span class="required">*</span></label>
<input name="YPageInfo[title]" id="YPageInfo_title" type="text" maxlength="256" />

</div>
<div class="row field_content">
<label for="YPageInfo_content" class="required">Content <span class="required">*</span></label>
<textarea name="YPageInfo[content]" id="YPageInfo_content"></textarea>

</div>


</div>
</div>

<div class="row buttons"><input name="submit" type="submit" value="Create" />
</div>
4

1 に答える 1

0

必要なことを行う方法を 1 つ見つけました。

elementsサブフォームのプロパティには、いくつかの入力が宣言されています。そこで宣言された各標準入力要素には のインスタンスがCFormInputElementあるため、attributesプロパティがあります。ここでは、結果の入力タグでレンダリングされる任意の HTML 属性を設定できます。ここにカスタムname属性を配置し、メイン CForm のサブフォーム構成アイテムを作成するループで変更します。

多分もっと良い方法がありますか?

于 2012-10-01T18:41:25.503 に答える