2012-09-29 18 views
0

我有一個模型陣列,它們都是一個類的實例。我需要創建一個表單,其中包含與陣列中的模型對應的子表單。如何用CForm創建一個子表單數組?

必須使用CForm,因爲我已經做了一個很好的小擴展,它可以呈現CJuiTabs中的子表單。在當前使用的代碼中,參數名稱是錯誤的,因爲它們的前綴是數組中模型類的名稱。

您可以在下面看到生成的HTML代碼片段。看到那些YPageInfo命名輸入?這就是問題所在 - 只有一組具有此前綴的輸入被服務器接收。

<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> 

回答

0

我找到了一種方法來做我所需要的。

在子表格的elements屬性中有一些聲明的輸入。每個聲明的標準輸入元素都有一個CFormInputElement的實例,因此它具有attributes屬性。在這裏,您可以設置任何HTML屬性,它將在結果輸入標記中呈現。我把我自定義的name屬性放在這裏,並且在一個循環中改變它,在那裏我爲主CForm創建子表單配置項。

也許有更好的辦法嗎?