2017-02-09 62 views
2

我正在CodeIgniter中開發一個新的應用程序。我已經在CI中開發了一些應用程序。在我以前的所有應用程序我用來處理表單的象下面這樣:在CodeIgniter中處理表單數據的最佳做法是什麼?

我的控制器:My_controller.php

class My_controller extends CI_Controller { 
    public function __construct() 
    { 
    parent::__construct(); 
    $this->load->model('my_model'); 
    } 
    public function sign_up() 
    { 
    $this->load->view('sign_up'); 
    } 
    public function do_sign_up() 
    { 
    $this->form_validation->set_rules(''); 
    $this->form_validation->set_rules(''); 
    if($this->form_validation->run() == false) 
    { 
     $this->load->view('sign_up'); 
    } 
    else 
    { 
     $this->my_model->insert_user(); 
     $data['message'] = "Signup Successful"; 
     $this->load->view('sign_up', $data); 
    } 
    } 

筆者認爲:sign_up.php

<html> 
<head></head> 
<body> 
<?php echo form_open("my_controller/do_sign_up"); ?> 

    form elements comes here..... 
    ............................... 

<?php echo form_close(); ?> 
</body> 
</html> 

我有一個疑問是2方法sign_up()& do_sign_up()在控制器中只需處理一個sign_up表單。如果我編寫這樣的代碼來處理每個表單,那麼控制器中的方法數量會增加。這是對的嗎?或者有沒有其他的方式來做到這一點?任何人都可以在這幫助我嗎?提前致謝。

回答

0

你一定可以使用一種功能。像下面的東西。

public function sign_up() 
{ 
    if ($this->input->post()) { 
     $this->form_validation->set_rules(''); 
     $this->form_validation->set_rules(''); 
     if($this->form_validation->run() == false) 
     { 
     $this->load->view('sign_up'); 
     } 
     else 
     { 
     $this->my_model->insert_user(); 
     $data['message'] = "Signup Successful"; 
     $this->load->view('sign_up', $data); 
     } 
    }else{ 
     $this->load->view('sign_up'); 
    } 

}

試試看吧。

+0

感謝您的快速回復。這肯定會起作用,但我想知道處理表單數據的最佳做法是什麼? –

0

您還可以設置這樣

public function registre() 
{ 


$this->form_validation->set_rules('email','EMAIL','trim|required|valid_email'); 

if($this->form_validation->run()==FALSE) 
    { 
     echo validation_errors(); 
     $this->load->view('sign_up');//load page 
    or you can  redirect('welcome/index');//also redirect 
    } 
    else{ 
     $data=array(
      'email'=>$this->input->post('email') 
      ); 

      $this->welcome_model->registre($data); 


     echo "<div class='alert'>Inscription success</div>"; 
     redirect('welcome/index'); 
    } 
} 

我覺得文檔以下是最佳做法https://www.codeigniter.com/userguide3/libraries/form_validation.html#form-validation-tutorial

+0

如果我不使用codeigniter的表單驗證,而是使用我自己的jQuery驗證,該怎麼辦。 –

+0

你可以做到,但codeigniter表單驗證比jQuery驗證更安全@ prasadchinthala –

0

對於我的觀點來處理CI中的數據(對於所有其他框架)的最佳實踐

1.對控制器中的變量賦值

2.從這些變量初始化數組

3.使用笨表單驗證來驗證用戶輸入 (應該做ATLEAST類型和長度驗證)

4.使用回調用戶定義的驗證,如果需要的話

5.Also做isset()函數和!空()方法調用的所有數據返回 形式的功能(這將檢查數據變量是否被設置,或者它具有 一個空值)

英鎊... ... 4.to前端驗證(客戶端驗證),我們可以使用html 或jquery validati on.Code能見度是主要缺點
對於後端(服務器端)的驗證大多數我們使用由相應的框架

7.Better編程實踐支持的模塊和 庫的時間同時具有前端和後 - 驗證

相關問題