1

基本的に 3 つのフォームを表示する小さなアプリケーションを構築しています...最初のフォームはオプションで、2 番目はオプションではなく、3 番目はオプションではありません。各フォームを個別の url(コントローラー) にしたいと思います。CodeIgniter form_validation のドキュメントを読んでいると、フォームは検証のために自分自身にのみ送信できるようです。その場合、フォームは同じページに表示され続けます...彼は基本的に私が持っているものです...そして私がやりたいことにコメントしました...

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/関数にリダイレクトする必要がありますか?

みんなありがとう...

4

1 に答える 1

5

これがあなたのやり方です

コントローラ -

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');
        }
}

あなたの質問への答えはイエスです。これらを同じ方法で保持し、検証が成功したときにリダイレクトします。

于 2012-05-03T15:28:33.437 に答える