【问题标题】:What's wrong with the form_validation?form_validation 有什么问题?
【发布时间】:2012-04-02 20:35:52
【问题描述】:

直升机,

所以我对 Codeigniter 中的 form_validation 有点问题,这里是控制器 -

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Records extends CI_Controller {

 public function index()
 {
   $this->load->helper(array('form', 'url'));
   $this->load->library('form_validation');  
    $this->load->helper('url');   
    $this->load->view('includes/header'); 
  $this->load->view('products');
  $this->load->view('includes/footer');
 }

 public function addRecord() {  
    $this->load->helper(array('form', 'url'));  
    $this->load->helper('url');    
    $query = $this->db->get_where('users', array('uname' => $this->session->userdata('username')));
    foreach($query->result_array() as $row) {
      $data = array(
        'username' => $row['uname'],
        'email' => $row['email'],
        'name' => $row['name'],
        'description' => $row['description'],
        'picture' => $row['picture'],
        'gender' => $row['gender'],
      );      
    }    
    if($this->session->userdata('logged_in')) {
      $this->load->view('includes/header'); 
      $this->load->view('my_records', $data);
      $this->load->view('includes/footer');
    }
    else {
      redirect('/home', 'refresh');
    }    
  }

  public function postRecord() {
    $this->lang->load('form_validation', 'latvian');
   $this->load->library('form_validation');    
    $this->load->model('records');
    $this->load->helper(array('form', 'url'));    
    if(!$this->session->userdata('logged_in')) redirect('/home', 'refresh');                

    $this->form_validation->set_rules('message', 'Ziņa', 'required|trim|min_length[5]|max_length[250]');

    $query = $this->db->get_where('users', array('uname' => $this->session->userdata('username')));    
    foreach($query->result_array() as $row) {
      $data = array(
        'username' => $row['uname'],
        'email' => $row['email'],
        'name' => $row['name'],
        'description' => $row['description'],
        'picture' => $row['picture'],
        'gender' => $row['gender'],
      );      
    }  
    // If doesn't pass validation, redirect's back with errors.
  if ($this->form_validation->run() == FALSE)
  {                                   
      $this->load->helper('url');  
      $this->load->view('includes/header'); 
    $this->load->view('my_records', $data);
    $this->load->view('includes/footer');
  }
  // If everything is correct add's user.
  else
  {
      $this->load->view('includes/header');   
      $this->load->view('my_records', $data);
    $this->load->view('includes/footer');       
  }  
  }

} ?> 

并查看 -

<div class="list-products">
       <div>
         <?php if(validation_errors()) { ?><div class="error-submit"><p><?php echo validation_errors(); ?></p></div><?php } ?>       
              <form class="fix-this form" method="post" action="/savieno/records/postRecord">
          <div class="formfield">
            <span class="profile">Your message:</span>
            <textarea id="message" name="message" class="with-label" rows="10" cols="10" placeholder="your message."></textarea>
          </div>
          <div class="formfield">
            <input type="submit" id="submit" name="postRecord" value="Pievienot" class="fix-this" />
          </div>
              </form>
            </div> 

一开始,它给了我错误,找不到函数set_message(),但是我在表单助手之前添加了form_validation,现在它可以工作了,但是又出现了问题,因为它没有显示表单错误代码。它根本不显示它,我已经为它设置了错误消息,它应该可以工作,但事实并非如此。可能是什么问题?

【问题讨论】:

  • 如果你var_dump(validation_errors())会发生什么?

标签: php codeigniter


【解决方案1】:

在你看来,你不需要:

<?php if(validation_errors()) { ?><div class="error-submit"><p><?php echo validation_errors(); ?></p></div><?php } ?>

你可以只使用:

<?php echo validation_errors('<div class="error-submit">', '</div>'); ?>

那里不需要 if 语句。看了一眼,或许能解决你的问题。

附带说明一下,在您的 Controller 中,没有必要关闭 PHP 标记,实际上最好的做法是不关闭它。

哦,如果你愿意,你也可以为:

function __construct() {
    parent::__construct();
    $query = $this->db->get_where('users', array('uname' => $this->session->userdata('username')));
    foreach($query->result_array() as $row) {
$data = array(
            'username' => $row['uname'],
            'email' => $row['email'],
        'name' => $row['name'],
        'description' => $row['description'],
            'picture' => $row['picture'],
        'gender' => $row['gender'],
        );      
} 
}

不过,我认为最好(MVC 架构)只在这样的模型(something)中提供该查询:

 $this->load->model('dude');
 $result = $this->dude->get_dude_where('$this->session->userdata('username'));
 foreach($result as $row) {
     $data = $result['result_array'];
 }

但这需要你设置一个模型函数来传递/返回 $query->result_array()。

无论如何,我希望这能解决您的 form_validation 问题。

【讨论】:

  • 稍后会检查它,今天;)!
  • 它并没有解决表单的问题,但至少它使我的代码可读;)!谢谢。
猜你喜欢
  • 1970-01-01
  • 2016-11-08
  • 1970-01-01
  • 2021-06-09
  • 2014-08-12
  • 2010-12-23
  • 2010-10-24
  • 2011-10-04
相关资源
最近更新 更多