2012-04-02 10 views
0

HELOコマンド、form_validationの何が問題ですか?

だから私は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> 

は開始時に、それは私にエラーを与え、そのfunctio set_message()を見つけることができませんが、フォームヘルパーの前にform_validationを追加しましたが、現在は動作しますが、フォームエラーコードが表示されないため問題が再発します。それはまったく表示されていません、私はそれのためのエラーメッセージを設定し、それは動作するはずですが、そうではありません。何が問題なの?あなたのビューで

+0

あなたが 'var_dump(validation_errors())'を実行するとどうなりますか? –

答えて

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文は必要ありませを。これを見渡すことで、あなたの問題を解決できるかもしれません。

あなたのコントローラでは、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']; 
} 

しかし、あなたは$ query-> result_array()を渡して返すモデル関数を設定する必要があります。

とにかく、私はあなたのform_validation問題を解決したことを願っています。

+0

今日、後でチェックします;)! –

+0

これはフォームの問題を解決しませんでしたが、少なくとも私のコードを読めるようにしました;)ありがとう。 –

関連する問題