2012-02-21 2 views
1

젠드 양식을 다시 채울 값을 얻을 수없는 문제가 있습니다. 나는 내가 익숙했던 것과 조금 다른 모양을 사용하고있다.이 젠드 양식을 어떻게 다시 채울 수 있습니까?

'사회 보장 번호'를 세 개의 필드로 나누었습니다. 값은 배열로 나오지만 작동 후에 다시 가져올 수는 없습니다.

이 내 양식 클래스입니다 :

class Application_Form_Checkssnforexistingreferral extends Zend_Form { 
    public function init() { 

     // SSN 
     $this->addElement('text', 'ss_number', array(
       'label' => 'SSN: ', 
       'required' => True, 
     )); 

    } 
} 

그런 다음 내보기에 내가 그렇게 같은 양식을 사용 ...

<?php // SSN (first segment) 
          echo '<p>Social Security Number</p>'; 
          echo $this->formText('ss_number["first"]', '', array(
           'size' => 3, 
           'maxlength' => 3, 
           'required' => True, 
           'id' => 'ssn1', 
           )) 
          ?> 
         <span>-</span> 
         <?php // SSN (second segment) 
          echo $this->formText('ss_number["second"]', '', array(
           'size' => 2, 
           'maxlength' => 2, 
           'required' => True, 
           'id' => 'ssn2', 
           )) 
          ?> 
         <span>-</span> 
         <?php // SSN (third segment) 
          echo $this->formText('ss_number["third"]', '', array(
           'size' => 4, 
           'maxlength' => 4, 
           'required' => True, 
           'id' => 'ssn3', 
           )) 
          ?> 

내가 더 많은 제어권을 가질 수 있도록 나는 이런 식으로했다 스타일 요소의 스타일과 표현은 더 큰 형태로도 잘 작동합니다. 물론 필드의 채우기에도 문제가 있습니다. 여기

내가 ... 컨트롤러에

if ($this->getRequest()->isPost()) { 
      $formData = $this->getRequest()->getPost(); 
      if ($form->isValid($formData)) { 



       $referralsModel = new Application_Service_Findssninreferrals(); 
       $referrals = $referralsModel->findSocialSecurityNumber($formData); 

       // load the view's parameter 'referral' w/ the object collection 
       // and 'NULL' the 'first page load' parameter 
       $this->view->referrals = $referrals; 

       $first = $formData['ss_number']['"first"']; 
       $second = $formData['ss_number']['"second"']; 
       $third = $formData['ss_number']['"third"']; 

       $form->populate(array('ss_number["first"]' => $first, 
             'ss_number["second"]' => $second, 
             'ss_number["third"]' => $third 
          )); 
       if (empty($referrals)) { 
        $flashMessenger->addMessage('There is no record found for this SSN, you may create a new referral for this client'); 

        print_r($formData); 
        $form->populate(array($formData['ss_number'])); 

        $ssn = $first . $second . $third; 
        $this->view->continueLink = "link to create new referral" . $ssn; 
        } 

      } else { 
         // else populate the form and allow the correction of... 
         $flashMessenger->addMessage('There was a problem with the number that you entered, please try again...'); 
         $form->populate($formData); 
        } 

      } 
      $this->view->form = $form; 

을 ...

요소 중 하나가 HTML로 렌더링하는 방법이 있습니다 ... 시도하고있는 무슨이다

<p>Social Security Number</p> 
<input type="text" required="1" maxlength="3" size="3" value="" id="ssn1" name="first" class="idleField"> 

컨트롤러에서 'if (emtpy ($ referrals))'섹션은 필드를 다시 채우려 고 시도하는 대부분의 실험을 수행하는 곳입니다. 위의 섹션은 작동하지 않습니다. 기본적으로 'form-> populate (array (...')하지만 행운도 없습니다. 'populate'메서드에서 아무 것도 얻지 못했습니다.

답변

1

요청 URL로 리디렉션하면 양식이 채워져서 다시 돌아올 것입니다. 그렇지 않으면 작동하지 않습니다. 요청없이 양식을 채울 수 없으며 (아약스 사용 가능) 나중에 다시 요청하지 않습니다. . 게시물이 하나 개의 동작은 아마 그러나, 적어도 2 개 행동해야 당신이이 방법을 시도 할 수 있습니다 :

if ($this->getRequest()->isPost()) { 
      $formData = $this->getRequest()->getPost(); 
      if ($form->isValid($formData)) { 

       $referralsModel = new Application_Service_Findssninreferrals(); 
       $referrals = $referralsModel->findSocialSecurityNumber($formData); 

       // load the view's parameter 'referral' w/ the object collection 
       // and 'NULL' the 'first page load' parameter 
       $this->view->referrals = $referrals; 

       $first = $formData['ss_number']['"first"']; 
       $second = $formData['ss_number']['"second"']; 
       $third = $formData['ss_number']['"third"']; 

       if (empty($referrals)) { 
        $flashMessenger->addMessage('There is no record found for this 
         SSN, you may create a new referral for this client'); 

        $this->_redirect($this->getRequest()->getRequestUri()); 
        //next line may or may not be needed or help 
        $form->populate($formData); 

        $ssn = $first . $second . $third; 
        $this->view->continueLink = "link to create new referral" . $ssn; 
       } 
      } else { 
       // else populate the form and allow the correction of... 
       $flashMessenger->addMessage('There was a problem with the number that you entered, please try again...'); 
       $form->populate($formData); 
      } 
     } 
     $this->view->form = $form; 
+0

내 양식을 실제로 버튼을 제출하는 URI에 요청을하고 있습니다를 클릭, 내가 할 경우 이 다음에 세 번째 요청이 될 것이고 va를 떠납니다. r $ formData도 비어 있습니다. 나는 그것이 $ formData가 다차원 배열 인 것과 더 많은 관련이 있다고 생각한다. 단지 'echo $ form'이고 $ form이 3 개의 입력 상자이고, 나는 그것을 필요로하는 방식으로 렌더링하지 않을 것이다. 하지만 고마워요 귀하의 답변을 – rhaag71

+0

@ rhaag71 귀하의 첫 번째 요청 양식을 표시, 두 번째 게시물이 작업에 양식,이 게시물에서 당신은 게시물 데이터를 얻을. 양식을 다시 표시하고 필드를 채우라는 또 다른 요청이 있어야합니다. 개인적으로 나는 폼을 다시 표시하기 위해 다른 액션에 _forward를 사용할 것입니다. – RockyFord

+0

그래, 내가 확인해 볼께 ... 고마워! – rhaag71

관련 문제