2012-04-02 154 views
0

直升机,form_validation有什么问题?

所以我在笨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,现在它可以工作,但是再次出现问题,导致它不显示表单错误代码。它只是没有显示它,我已经为它设置了错误信息,它应该工作,但事实并非如此。可能是什么问题呢?

+0

如果var_dump(validation_errors())'会发生什么? – 2012-04-02 20:50:13

回答

0

在你看来,你并不需要:

<?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架构),只是使可用的查询在模型(东西 )这样,而不是:

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

但这需要你建立一个模型函数来传递/返回$查询 - > result_array()。

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

+0

今天晚些时候会检查;)! – 2012-04-03 05:09:38

+0

它没有解决表单的问题,但至少它使我的代码可读;)!谢谢。 – 2012-04-03 15:21:53