2016-05-05 8 views
0

Grundsätzlich habe ich 3 Formen. Ich habe eine Aktion in meinem Formular und ich möchte 3 Schritte Formular mit Sitzung erstellen. Ich will, wenn ich auf die nächste Schaltfläche klicken überprüft das Formular1, wenn erfolgreich, dann leitet zu form2 .. wie weise für form3, aber behalten Sie alle Daten in Sitzung und im dritten Schritt läuft die Aktion läuft und fügt alle Daten zur Datenbank.
Ich muss nur Bedingungen aus der Sitzung überprüfen, bevor meine Einfügung in meiner Aktion adjob ausgeführt wird. Plz mir helfen, dies zu tun.sitzungsbasierte mehrstufige form cakephp

Meine Hauptfrage ist, wie all Post-Daten in einem Session-Variablen zu erhalten und Schritt für Schritt überprüfen, bevor Einsatz ..

ich bin Lerner in CakePHP, und ich habe nicht genug Ahnung von Sitzung. Wenn Sie ein Experte sind dann tun dies.

public function addjob($id = NULL) { 
    $this->layout = "layout_registration_old";   
    $this->loadcategory(); 
    $this->loadcargo(); 
    //$this->loadsubcategory(); 
    $this->getCountries(); 
    $this->getstates(); 
    if ($this->request->is('put') || $this->request->is('post')) {   
     if (isset($id)) { 
      $this->Job->id = $id; 
     } else { 
      $this->request->data['Job']['status'] = 1; 
      $this->request->data['Job']['job_type'] = 1; //this is used to update the job type private or public. 
      $this->Job->create(); 
     } 
     $this->Job->set($this->request->data); 
     if ($this->Job->AddEdit()) { // ADDEdit is the validation name in model    
      if ($this->Job->save($this->request->data['Job'], false)) { 
       if (isset($id)) { 
       $this->Session->setFlash(__('Job has been updated sucessfully.')); 

       } else { 
       $this->Session->setFlash(__('Job has been added succesfully.')); 

       } 
       $this->redirect(array('controller' => 'jobs', 'action' => 'index')); 
      } 
     } else { 
      $errors = $this->Job->validationErrors; 

      $this->Session->setFlash(__('Please check your entry.'), 'flash_error'); 
     } 
    } 
    if (isset($id)) { 
     $this->request->data = $this->Job->find('first', array('conditions' => array('id' => base64_decode($id)))); 
    } 

} 

Form - 1

<?php echo $this->Form->create('Job', array('url' => array('controller' => 'jobs', 'action' => 'addjob')));?> 

    <?php echo $this->Form->input('customer_name',array('div' => false, 'label' => false));?> 
     <?php echo $this->Form->input('customer_no',array('div' => false, 'label' => false));?> 
     <?php echo $this->Form->input('customer_email',array('div' => false, 'label' => false));?> 
     <?php 
        echo $this->Form->input('transport_type', array(
         'type' => 'select', 
         'label' => false, 
        'class' => 'select', 
         'options' => array(
          1 => 'Road' 
        ),     

       )); 
       ?> 
<?php echo $this->Form->submit('Save', array('class' => "navigation_button btn btn-primary btn-sm", 'div' => false)); ?> 
     <?php echo $this->Form->end(); ?> 

Form - 2

<?php echo $this->Form->create('Job', array('url' => array('controller' => 'jobs', 'action' => 'addjob')));?> 

<?php echo $this->Form->input('fname',array('div' => false, 'label' => false));?> 
    <?php echo $this->Form->input('lname',array('div' => false, 'label' => false));?> 
    <?php echo $this->Form->input('email',array('div' => false, 'label' => false));?> 
    <?php echo $this->Form->submit('Save', array('class' => "navigation_button btn btn-primary btn-sm", 'div' => false)); ?> 
    <?php echo $this->Form->end(); ?> 

Form - 3

<?php echo $this->Form->create('Job', array('url' => array('controller' => 'jobs', 'action' => 'addjob')));?> 

    <?php echo $this->Form->input('shop',array('div' => false, 'label' => false));?> 
     <?php echo $this->Form->input('business',array('div' => false, 'label' => false));?> 
     <?php echo $this->Form->input('status',array('div' => false, 'label' => false));?> 
<?php echo $this->Form->submit('Save', array('class' => "navigation_button btn btn-primary btn-sm", 'div' => false)); ?> 
     <?php echo $this->Form->end(); ?> 

Antwort

0

Anstatt die Daten der ersten beiden Formulare in einer Sitzung zu speichern, sollten Sie ein mehrteiliges Formular mit einer beliebigen Javascript-Lösung (Formularassistent) implementieren. Validieren Sie die Daten jedes Schrittes mithilfe von JavaScript oder über Ajax (falls dynamisch durchgeführt werden muss), bevor Sie mit dem nächsten Schritt fortfahren und senden Sie das Formular am Ende, damit Sie nicht mit Sitzungen spielen müssen.

Example link

PS - Dies als Kommentar auf die Frage gehen könnte, aber ich habe nicht genug Ruf um Kommentare zu schreiben noch gewonnen :(

Verwandte Themen