2012-05-03 4 views
1

Я создаю небольшое приложение, которое будет в основном отображать 3 формы ... первый вариант необязательный, второй - нет, а третий нет. Я хотел бы, чтобы каждая форма была отдельным URL-адресом (контроллером). Читая документацию для CodeIgniter form_validation, кажется, что форма может подчиниться только самому себе для проверки. Если это так, то формы будут продолжать показ на той же странице ... он в основном то, что у меня есть ... и прокомментированы в том, что я хотел бы сделать ...Логика логики CodeIgniter

class Index extends CI_Controller { 

function __construct() 
    { 
     parent::__construct(); 
    } 

     function index() 
     { 
     //load front page that contains first form... 
       $content['title'] = 'Home'; 
       $content['view'] = 'pages/index'; 
       $this->load->view('template/default',$content); 

     } 
     function step_two() 
     { 
      //recieve information from front page. validate form. If validation is 
      //successful continue to step_two(url) if it fails redirect 
      //to front page with error... 

      $this->form_validation->set_rules('serial', 'Serial Number', 'required'); 

      if ($this->form_validation->run() == FALSE) 
      { 
      //return to front page... 
      }else{ 
      //do necessary work and load step_two view 
      } 


     } 

} 

?> 

Это фрагмент из моя идея. Но я замечаю, что вы не можете иметь проверку формы, если форма не подчиняется самому себе. Есть идеи? Должен ли я проверить форму, а затем просто перенаправить на новый url/function?

Спасибо, ребята ...

+0

Переадресация при успешной проверке ... – rlemon

ответ

5

это, как вы это делаете

Controller -

public function step1() 
{ 
     if ($this->form_validation->run() == FALSE) 
     { 
      $this->load->view('myform1'); 
     } 
     else 
     { 
      //do something to post data 
      redirect('/controller/step2'); 
     } 
} 


public function step2() 
{ 
     if ($this->form_validation->run() == FALSE) 
     { 
      $this->load->view('myform2'); 
     } 
     else 
     { 
      //do something to post data 

      redirect('/controller/step3'); 
     } 
} 

так ответить на ваш вопрос, да, вы держите их в тот же метод и перенаправление успешная проверка.

+0

Итак, если вы говорите ... Я хотел, чтобы люди не обращались к шагу 3, если только не была успешно обработана форма 2, вы бы просто установили переменную сеанса после успешной проверки и проверили ее в функции step3 ? –

+1

Да, переменная сеанса - неплохая идея. Или это зависит от того, как эти формы взаимосвязаны - например, если step1 создает новую запись db, возможно, вы можете сделать быструю проверку, прежде чем показывать форму на шаге 2 – TigerTiger

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