0

양식이 있습니다. 일부 필드는 행처럼 보이므로 JS를 사용하여 추가/삭제할 수 있습니다. ID = 1 (기존 행)와Zend Framework, Zend_Form_Element 맞춤 이름을 설정하는 방법?

필드 ID = 2의 (기존의 행)와

<input id="id[1]" type="text" name="id[1]" value="1" /> 
<input id="name[1]" type="text" name="name[1]" value="100" /> 

필드에 의해 생성

<input id="name[2]" type="text" name="name[2]" value="200" /> 
<input id="name[2]" type="text" name="name[2]" value="200" /> 

새로운 행 예 : 기본값 (기존 행에 하나 이상의 행 추가 허용)

우리는 양식을 진행할 것보다 JS

<input id="id[n1]" type="text" name="id[n1]" value="" /> 
<input id="name[n1]" type="text" name="name[n1]" value="" /> 

만든

<input id="id[n0]" type="text" name="id[n0]" value="" /> 
<input id="name[n0]" type="text" name="name[n0]" value="" /> 

새 행이 그래서, 우리는 업데이트하고 인덱스가 "N"로 시작하면 무슨 일이 (추가하는 것을 행 알 - 새로운 경우, index가 number - existent 요소 인 경우).

하위 형식을 시도했지만 ... 각 필드에 대해 하위 형식을 만들어야합니까? 다음 코드를 사용하는 경우 :

$subForm = new Zend_Form_SubForm(); 
$subForm->addElement('Text', 'n0'); 
$this->addSubForm($subForm, 'pid');  
$subForm = new Zend_Form_SubForm(); 
$subForm->addElement('Text', 'n0'); 
$this->addSubForm($subForm, 'name'); 

가장 좋은 방법은 무엇입니까?

1) 하위 형식을 사용 하시겠습니까?

2) Zend/Form/Decorator/ViewHelper.php를 확장하여 name[nX]과 같은 이름을 사용 하시겠습니까?

3) 다른 솔루션?

감사합니다.

답변

2

다른 대안은 모든 필드가있는 단일 하위 양식을 만든 다음이 하위 양식의 배열을 기본 폼에 추가하는 것입니다.

 foreach ($value as $id => $row) { 

       $subForm = clone $origSubForm; 

       $name = 'multi[' . $id . ']'; 
       $subForm->setElementsBelongTo($name); 
       $subForm->setName($name); 
       $subForm->populate($row); 

       $subForms[$id] = $subForm; 
     } 

이 (multi 이름이 예에서) 배열 요소에 이러한 양식을 넣어 : 이것은 내가 그것을 위해 사용하는 코드입니다. 개별 $id[] 값을 포함하는 배열 대신 하나의 배열에 [0 => ['id' => .., ], 'n0' => ['id' => ...]]

+0

이 포함되어 있습니다. 그것은 내가 필요한 것입니다. – user281571

+0

>이 정보를 찾는 것이 얼마나 힘든지 알 수 없습니다. 주된 이유는 내가 수색 한 방식이었다고 생각합니다. 각 하위 폼에 대한 배열을 가져 오는 방법을 찾으려고했습니다. 절망에서 벗어나서 나는 내 이름을 정하고이 페이지에 상륙 할 것이라고 생각했다. 튜토리얼을 만들어야합니다! 그들은 약간 드물다! –