2012-11-30 90 views
2

我在控制器中設置了一個表單,它既從數據庫加載表單及其以前填充的內容,又根據需要處理表單。問題是$ this-> form_validation-> run()永遠不會計算爲FALSE,即使規則不符合。CodeIgniter表單驗證無法正常工作

控制器:

public function edit_version($node, $lang) 
{ 
    // load form validation class 
    $this->load->library('form_validation'); 

    // set validation rules 
    $this->form_validation->set_rules("title|Title|required"); 

    // run validation 
    if ($this->form_validation->run() !== FALSE) 
    { 
     // save input to database 
     die("validation successful"); 
    } 
    else 
    { 
     // either validation was not passed or no data to validate 
     // load page edition view and display databse contents 

     // load page model 
     $this->load->model("page_model"); 

     // get the page from database 
     $data["page"] = $this->page_model->get_page($node, $lang); 

     // load views 
     $this->load->view("admin/header.php", array("title" => "Edit page no.: $node, $lang version - Admin")); 
     $this->load->view("admin/pages/edit_page.php", $data); 
     $this->load->view("admin/footer.php"); 
    } 
} 

型號:

class Page_model extends CI_Model 
{ 
public function get_page($node, $lang) 
{ 
    // load the page 
    return $this->db->get_where("pages", array("node" => $node, "lang" => $lang))->row(); 
} 

public function save_version($page) 
{ 
    $this->db->where("node", $page["node"]); 
    $this->db->where("lang", $page["lang"]); 
    $this->db->update("pages", $page); 
} 

public function search($query) 
{ 
    return $this->db->get_where("pages", $query)->result(); 
} 
} 

查看:

<h2>Edit page</h2> 
<?php 
// load form helper 
    $this->load->helper("form"); 

// open a form 
echo form_open("admin/page/{$page->node}/edit/{$page->lang}"); 

// print validation errors 
echo validation_errors(); 

// title and content fields 
echo form_label("Title: ", "title"); 
echo form_input("title", set_value("title", $page->title)); 

// aesthetic line break 
echo "<br>"; 

echo form_label("Content: ", "content") . "<br>"; 
echo form_textarea("content", set_value("content", $page->content)); 

// save button and close form 
echo form_submit("submit", "Save page"); 
echo form_close(); 

在此先感謝。

回答

4

語法設置規則是

$this->form_validation->set_rules('field_name', 'Label', 'rule1|rule2|rule3'); 

考慮規則的一套規則線將

$this->form_validation->set_rules('title','Title', 'required"); 
+0

是的兄弟你是對的...我有同樣的問題,即使拼寫錯誤的表單字段未通過驗證。 –

+0

我很高興它幫助你! –

0

使用

$this->form_validation->set_rules("title","Title","required"); 

,而不是這個

$this->form_validation->set_rules('title','Title','required'); 

我已經測試了這一點。它像一個魅力。