2012-03-22 3 views
2

이 질문이 다른 곳에 있으면 SO를 내게 밝혀주세요. 내 검색에 행운이 없었습니다.Zend Framework를 사용하여 동적으로 생성 된 양식 요소의 값 허용

딜레마 : 나는/업로드 내 아내를 가능하게 그녀의 사이트에 사진을 관리 할 수있는 인터페이스를 짓고 있어요

. 프로세스를 간소화하기 - 나는 그녀가 여러 이미지를 추가 할 수있을 것입니다 상기 '추가 사진'폼 행을 복제 구성 요소를 내장 한 번과 같이 :

마크 업 (Zend_Form에 의해 생성)

<section id="add-photos"> 
    <form enctype="multipart/form-data" action="/admin/photo/add-photos" method="post"> 
     <dl class="zend_form"> 
      <dt id="AddPhotos-label">&#160;</dt> 
       <dd id="AddPhotos-element"> 
        <fieldset id="fieldset-AddPhotos"> 
         <dl> <-- This element is what get's duplicated on the 'add 
           another image' button --> 
         <input type="hidden" name="id" value="" id="id" /> 
         <dt id="image_name-label"> 
          <label for="image_name" class="required">Image Name</label> 
         </dt> 
         <dd id="image_name-element"> 
          <input type="text" name="image_name" id="image_name"  
           value="" /> 
         </dd> 
         <dt id="album_name-label"> 
          <label for="album_name" class="required">Album Name</label> 
         </dt> 
         <dd id="album_name-element"> 
           <input type="text" name="album_name" id="album_name" 
            value="" /> 
         </dd> 
         <dt id="category_name-label"> 
           <label for="category_name" class="required">Category 
            Name</label> 
         </dt> 
         <dd id="category_name-element"> 
           <input type="text" name="category_name" 
             id="category_name" value="" /> 
         </dd> 
         <dt id="image-label"> 
           <label for="image" class="optional">Image:</label> 
         </dt> 
         <dd> 
          <input type="hidden" name="MAX_FILE_SIZE" value="134217728" 
            id="MAX_FILE_SIZE" /> 
          <input type="file" name="image" id="image" /> 
         </dd> 
         <dt id="thumbnail-label"> 
          <label for="thumbnail" class="optional">Is Thumbnail? 
          </label>  
         </dt> 
         <dd id="thumbnail-element"> 
          <input type="hidden" name="thumbnail" value="0" /> 
          <input type="checkbox" name="thumbnail" id="thumbnail" 
           value="1" /> 
         </dd> 
         <dt id="AddAnotherPhoto-label">&#160;</dt> 
         <dd id="AddAnotherPhoto-element"> 
          <button name="AddAnotherPhoto" id="AddAnotherPhoto" 
           type="button">Add Another Photo</button> 
         </dd> 
        </dl> 
       </fieldset> 
      </dd> 
      <dt id="submit-label">&#160;</dt> 
       <dd id="submit-element"> 
        <input type="submit" name="submit" id="submit" value="Submit" /> 
       </dd> 
      </dl> 
     </form>  
</section> 

사용자가 'AddAnotherPhoto'버튼을 클릭하면 <dl><fieldset> 안에 추가됩니다. 당신이 내 컨트롤러 액션으로 기대하는 것처럼,

<fieldset> 
    <dl></dl> 
    <dl></dl> 
</fieldset> 

:하지만 그것은 단지 요소 중 하나 개 세트를 캡처하는 것

public function addPhotosAction() 
{ 
    $form = new Form_AddPhoto(); 
    if($this->_request->isPost()){ 
     if($form->isValid($_POST)){ 
      $photo_model = new Admin_Model_Photo(); 

      $photo_model->addPhoto(
       $form->getValue('image_name'), 
       $form->getValue('album_name'), 
       $form->getValue('category_name'), 
       $form->getValue('thumbnail') 
      ); 
     } 
    } 
    $form->setAction('/admin/photo/add-photos'); 
    $this->view->form = $form; 
} 

그래서 구조가 될 것입니다. 그래서 내 질문은 : 그룹화 된 방식으로 들어오는 모든 요소를 ​​어떻게 캡처합니까? 요청 객체를 반복하는 방법이 있고 각 세트의 사진 모델에서 addPhoto 메서드를 호출합니까?

반복 작업이 쉽게 수행되는 $.ajax()을 통해 프런트 엔드에서이 작업을 시도했지만 데이터가 작업에 너무 쉽게 전달되지 않았습니다.

구조적으로이를 해결하기위한 더 좋은 방법이 있는지 또는이 작업이 수행되는 다른 예가 있는지 알려주십시오.

덕분에, 켄

나는이 그래서 당신은 분명 뭔가가 필요하면 알려 주시기 설명하는 힘든 시간이 있었다.

+2

참조 http://stackoverflow.com/questions/5632296/zend-framework-add-new-input-element-using-javascript/5640268#5640268 –

+0

전체 데이터 세트를 ' $ form-> getValues ​​()를 호출하면 모든 값이 게시되고 필터가 적용된 배열이 반환됩니다. 모든 사진을 얻으려면 어레이를 반복해야 할 수도 있습니다. – RockyFord

답변

1

내가 어디에 (서) 어디에 내가 각 addphoto 부분에 대한 하위 양식을 만들 것입니다. 그런 다음 u를 복사하면 ID가 그룹화 될 ID가 변경됩니다. u는 다음 이것은 uniqid의 요소가 너무 u는 모든 포스트 결과를 얻을이 그룹을 만들어 다음과 같은 기능

$form->setElementsBelongTo(<uniqid>); 

를 사용할 수있는이 하위 폼으로

.

그래서 요소 = "테스트 [여기서 image_name]"컨트롤러에서

은 u는 다음 사용자 $ 형상 ->에 getValues ​​()을 얻을 수있는 모든 다음 양식의 값 루프 이름과 같은 이름을 가질 것 foreach 루프가있는 데이터

관련 문제