В основном у меня есть 3 формы. У меня есть одно действие в моей форме, и я хочу создать 3 шага, используя сеанс. Я хочу, чтобы при нажатии следующей кнопки она проверяет форму 1, если она успешна, то перенаправляется на form2 .. как мудрый для form3, но сохраняет все данные в сеансе, а на третьем шаге действие запускается и добавляет все данные в базу данных.
Мне нужно только проверить условия с сеанса до того, как моя вставка будет запущена в моей дополнительной программе. Plz помогите мне сделать это.
Мой главный вопрос заключается в том, как получить все данные сообщения в одной переменной сеанса и проверить шаг за шагом перед вставкой.
Я участвую в cakephp, и у меня недостаточно представления о сеансе. если вы эксперт, тогда plz сделайте это.
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)))); } }
форма – 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(); ?>
форма – 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(); ?>
форма – 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(); ?>
Вместо сохранения данных из первых 2 форм в сеансе вы должны реализовать форму с несколькими частями, используя любое решение javascript (мастер форм). Подтвердите данные каждого шага с помощью javascript или через ajax (если нужно сделать динамически), прежде чем перейти к следующему шагу и отправить форму в конце, чтобы вам не приходилось играть с сеансами.
Пример ссылки
PS – Это могло бы стать комментарием к вопросу, но я не получил достаточной репутации, чтобы оставлять комментарии еще 🙁