0
を設定していない、私は私のコントローラ上で、私はこれを持って、セットアップに私の検証ルールをしようと、しばらくの間立ち往生されています:CodeIgniterのフォームバリデーションはルール
public function login() {
$this->load->library('form_validation');
$this->form_validation->set_rules(array(
'field'=>'username',
'label'=>'Username',
'rules'=>'required'
));
if (!$this->form_validation->run()) {
$this->json(array(
'status'=>'error',
'errors'=>$this->form_validation->error_array(),
'test'=>$this->form_validation->get_options()
));
return;
}
$user = $this->MUser->findByAttributes(array('username'=>$this->input->post('username')));
if(!$user) {
$this->json(array(
'status'=>'error',
'errors'=>array('username'=>'Username is not yet registered.')
));
return;
}
$encpass = sha1($user->salt.$this->input->post('password'));
if ($encpass != $user->password) {
$this->json(array(
'status'=>'error',
'errors'=>array('password'=>'Invalid username/password, please try again.')
));
return;
}
$this->json(array(
'status'=>'success',
'errors'=>''
));
}
私はまた、拡張ベースのコントローラクラスと拡張フォーム検証を持っていますクラスは次のようである:
class AM_Controller extends CI_Controller {
public function __construct(){
parent::__construct();
}
public function render_template($view, $data = array(), $internal = false) {
$view_contents = $this->load->view($view, $data, true);
$header = $internal?$this->load->view('internal/header',$data,true):$this->load->view('external/header',$data,true);
$footer = $internal?$this->load->view('internal/footer',$data,true):$this->load->view('external/footer',$data,true);
$this->output->set_status_header(200,'ok');
$this->load->view('general/template',array_merge(array(
'header'=>$header,
'footer'=>$footer,
'content'=>$view_contents
),$data));
}
public function json($data) {
$this->output->set_status_header(200,'ok')
->set_content_type('application/json')
->set_output(json_encode($data));
}
}
class AM_Form_validation extends CI_Form_validation {
public function __construct($options = array()) {
parent::__construct($options);
}
public function correct_captcha ($str) {
$this->set_message('correct_captcha','Invalid %s answer.');
return $this->CI->session->userdata('captcha_answer') == $str;
}
public function get_options() {
return $this->_field_data;
}
}
をしかし、問題は、私はいくつかの値かどうかを入力した場合、私は、フォームの検証をテストしようとするたびに、それは関係なく、常にfalseを返します。このバグの原因は何ですか?ところで
は、私はまた、唯一の私のコントローラクラスのCI_Controllerを使用してみましたが、それでも運
'AM_Controller'は 'index()'と同じクラスですか?そうでなければ、 'index()'とは何ですか?そしてそれはどのように呼び出されますか?表示されるコードがどのように適合するかを確認することは非常に難しいです。 – DFriend
codeigniterでたくさんのAJAXを使用しているなら、この[AJAX library](https://github.com/joshcam/Codeigniter-jQuery-Ajax)に興味があります。 CIとうまく機能します。 – DFriend
@DFriend yesすべてのコントローラがAM_Controllerを使用しています –