2014-10-07 2 views
0

Я хочу отправить эту форму без перезагрузки страницы (внутри самого модального). После проверки формы она должна перенаправляться на нужную страницу не после отправки формы , примечание: Я не хочу использовать AJAX спасибо. Вот изображение: enter image description hereZF2-представление формы без перезагрузки страницы в самом модале, как показано на рисунке

вот что я попробовал ..

 public function listAction() 
{ 
    if(!$user = $this->identity()) 
     return $this->redirect()->toRoute('user',array('action'=>'login')); 
    $em = $this->getEntityManager(); 

    $survey = new Survey(); 
    $form = new SurveyForm(); 
    $message="Create Survey"; 
    $surveyList = $em->getRepository('Easysurvey\Entity\Survey')->findall(); 

    $form->get('submit')->setValue('Save & Add Question'); 

    $form->setHydrator(new DoctrineHydrator($em,'Easysurvey\Entity\Survey')); 
    $form->bind($survey); 

    //add new  
    $request = $this->getRequest(); 
    if ($request->isPost()) { 
     $data = $request->getPost(); 

      $form->setInputFilter(new SurveyFilter($this->getServiceLocator())); 
      $form->setData($data); 

      if ($form->isValid()) { 
       $this->prepareData($survey); 

       $this->flashMessenger()->addSuccessMessage('succesfully created'); 
       $em->persist($survey); 
       $em->flush(); 

        return $this->redirect()->toRoute('survey', array('action' => 'list')); 
      } 
     } 
    } 
    return array('form' => $form, 
        'surveyList' => $surveyList, 
         'message' => $message 

    ); 
} 

list.phtml:

       <!-- Create Modal --> 
     <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 
     <div class="modal-dialog modal-lg"> 
     <div class="modal-content"> 
     <div class="modal-header"> 
      <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
      <h4 class="modal-title" id="myModalLabel"><?php echo $message?></h4> 
     </div> 
     <div class="modal-body"> 
      <?php 
       $form->setAttribute('action', $this->url('survey', array('action' => 'list')),'class','form-horizontal'); 
       $form->prepare(); 

       echo $this->form()->openTag($form); 
       echo $this->formHidden($form->get('id')); 
       echo $this->formRow($form->get('name')); 
       echo '<br />'; 
       echo $this->formRow($form->get('description')); 
       echo '<br />'; 
       echo $this->formRow($form->get('startdate')); 
       echo '<br />'; 
       echo $this->formRow($form->get('enddate')); 
       echo '<br />'; 
       echo $this->formRow($form->get('createdby')); 
       echo '<br />'; 
       echo $this->formSubmit($form->get('submit')); 
       echo $this->form()->closeTag(); 
      ?> 
     </div> 
     <div class="modal-footer"> 
      <button type="button" class="btn btn-default" data-dismiss="modal">Close </button> 
     </div> 
    </div> 
</div> 

+0

Это здорово, дайте нам знать, если у вас возникли какие-либо проблемы с тем, что вы уже пробовали. – Daedalus

+0

Когда я нажимаю кнопку отправки, она перенаправляется, поэтому модаль уходит. Я хочу сохранить модальную форму до тех пор, пока моя форма не будет проверена. –

+0

Покажите нам, что вы пробовали. SO - это не бесплатная работа. – Daedalus

ответ

1

Вам нужно JavaScript для того, Jquery сделать ajax вызывает очень просто, в основном:

Чтобы получить URL: $ ('form.form-horizontal'). Attr ('action');

Затем при обратном вызове, который является функцией, вызванной после выполнения запроса, вы скрываете модальный модуль начальной загрузки и, при желании, показываете успешное сообщение конечному пользователю.

$.ajax()

+0

Пользователь заявил в своем сообщении, что ajax невозможен. – Daedalus

+0

хорошо, это как дизайн веб-сайта без css. – peterpeterson

+0

Не совсем, даже близко. В любом случае, это требование OP. – Daedalus

Смежные вопросы