【问题标题】:CodeIgniter form validation not working properlyCodeIgniter 表单验证无法正常工作
【发布时间】:2012-11-18 19:09:05
【问题描述】:

我在控制器中设置了一个表单,它既可以从数据库加载表单及其先前填充的内容,又可以根据需要处理表单。问题是 $this->form_validation->run() 永远不会评估为 FALSE,即使不符合规则。

控制器:

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();

提前致谢。

【问题讨论】:

    标签: php codeigniter validation


    【解决方案1】:

    使用

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

    而不是这个

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

    我已经对此进行了测试。它就像一个魅力。

    【讨论】:

      【解决方案2】:

      设置规则的语法是

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

      通过考虑规则,您设置的规则行将是

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

      【讨论】:

      • 是的,你是对的...我遇到了同样的问题,即使表单字段的拼写错误也无法通过验证。
      • 很高兴它对您有所帮助!
      【解决方案3】:

      我不是 CodeIgniter 经验丰富的开发人员,但从文档来看,正确的语法不是以下?

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

      根据此链接: http://ellislab.com/codeigniter/user-guide/libraries/form_validation.html#validationrules

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-18
        • 2012-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多