2012-09-29 3 views
0

나는 하나의 클래스의 인스턴스가되는 모델의 배열을 가지고있다. 배열에서 모델에 해당하는 하위 양식을 포함하는 양식을 작성해야합니다.CForm을 사용하여 하위 양식 배열을 만드는 방법은 무엇입니까?

CForm을 사용하고 싶습니다. Cforms의 멋진 작은 확장을 만들었 기 때문에 Cforms에서 하위 양식을 렌더링 할 수 있습니다. 현재 사용되는 코드에서 POST 매개 변수 이름은 배열의 모델 클래스 이름 앞에 접두사가 붙어 있기 때문에 잘못되었습니다.

아래 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에 대한 하위 양식 구성 항목을 만드는 루프에서 변경합니다.

아마도 더 좋은 방법이 있을까요?

관련 문제