私はcodeigniterで新しいです。私はこのフォームを持っており、フォームの最後に確認のためにパスワードを再入力する必要がありますが、パスワードが間違っていて入力フィールドに入力したすべてのデータが消えた場合、ページがリロードされます。ページの再読み込みを行わずにvalidation_errorを出力する方法はありますか?Codeigniter 3:フォームの検証エラーでフォームをリロードしない
ここに私のビューのフォームは
<?php echo form_open('forms/submit_form');?>
<div id="form-interview-fill-mainform">
<div class="container">
<div class="col-sm-6">
<div class="form-group">
<label>Strengths:</label>
<textarea class="form-control form-input" onkeyup="textAreaAdjust(this)" rows="1" name="shifter_answer[]"></textarea>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label>Weaknesses:</label>
<textarea class="form-control form-input" onkeyup="textAreaAdjust(this)" rows="1" name="shifter_answer[]"></textarea>
</div>
</div>
<div class="custom-form">
<?php
if(validation_errors()){
?>
<div class="alert alert-danger alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-lable="Close"><span aria-hidden="true">×</span></button>
<strong><?php echo validation_errors()?></strong>
</div>
<?php
}?>
<label>Password</label>
<center>
<?= form_password('password','','class="form-control" id="password" style="width:80%;font-size:20px;" required');?>
</center>
</div>
<center><?php echo form_submit('submit','Submit Form', 'class="btn btn-success btn-lg"');?></center>
</div>
</div>
<?php echo form_close();?>
SHIFTER.HTMLはここでコントローラ
public function submit_form(){
$this->form_validation->set_rules('password','Password','trim|required|callback_check_pass');
if ($this->form_validation->run()==false){
$this->load->view('shifter.html');
}else {
$session_data = $this->session->userdata('logged_in');
$data['id'] = $session_data['id'];
$givenAns= $this->input->post('shifter_answer');
foreach($givenAns as $ansKey => $ansVal){
$ansKey+=16;
$ids []= $this->forms_model->shifter_form_submit($data['id'],$ansVal,$ansKey);
}
redirect('profile/forms','refresh');
}
}
function check_pass($password){
$session_data = $this->session->userdata('logged_in');
$data['id'] = $session_data['id'];
$password = $this->input->post('password');
$this->load->model('forms_model');
$result = $this->forms_model->val_password($data['id'],$password);
if($result){
return true;
}else{
$this->form_validation->set_message('check_pass', "Invalid Password");
return false;
}
}
だとこちらのモデルは
function val_password($id,$password){
$this->db->select('id,password');
$this->db->from('tbl_st_account');
$this->db->where('id', $id);
$this->db->where('password', $password);
$this->db->limit(1);
$query = $this->db->get();
if($query->num_rows()==1){
return $query->result();
}else{
return false;
}
}
だのです
こんにちは、フォームを再投入するには、このフォーム[doc](https://www.codeigniter.com/userguide3/libraries/form_validation.html#re-populating-the-form)をフォーム持っているが、あなたがロードページなしでフォームを送信する場合は、ああ、AJAXを使用する必要があり、それとフォームの値を再投入 – elddenmedio