工作,我在用我回電話了表單驗證的一個問題。 驗證應檢查tbl_fees_type是否有創建一個新的收費類型之前,現有的fees_type_name,如果它已經存在,它會顯示一個錯誤的費用類型已經存在。回調錶單驗證未在HMVC
我知道所需的表單驗證工作,因爲它表明它是必需的,但是當涉及到回調驗證是否存在利用回調它不工作,檢查從數據庫中的信息。
這是我的代碼:
所以我有一個Feestype控制器這樣
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
class Feestype extends MX_Controller {
public function __construct() {
parent::__construct();
// loading the fees type model
$this->load->model('model_feestype');
// loading the form validation library
$this->load->library('form_validation');
}
public function index() {
$this->load->view('feestype');
}
public function create()
{
$validator = array('success' => false, 'messages' => array());
$validate_data = array(
array(
'field' => 'fees_type_name',
'label' => 'Fees Type Name',
'rules' => 'trim|required|callback_validate_feestypename'
//this is the callback
),
array(
'field' => 'fees_type_role',
'label' => 'Fees Type Role',
'rules' => 'trim|required|'
)
);
$this->form_validation->set_rules($validate_data);
$this->form_validation->set_error_delimiters('<p class="text-danger">','</p>');
if($this->form_validation->run() === true) {
$create = $this->model_feestype->create();
if($create === true) {
$validator['success'] = true;
$validator['messages'] = "Successfully added";
}
else {
$validator['success'] = false;
$validator['messages'] = "Error while inserting the information into the database";
}
}
else {
$validator['success'] = false;
foreach ($_POST as $key => $value) {
$validator['messages'][$key] = form_error($key);
}
} // /else
echo json_encode($validator);
}
// call back validation function to do
public function validate_feestypename()
{
$validate = $this->model_feestype->validate_feestypename();
if($validate === true) {
$this->form_validation->set_message('validate_feestypename', 'The {field} already exists');
return false;
}
else {
return true;
}
}
}
?>
,這是model_feestype.php型號
<?php if (!defined ('BASEPATH')) exit ('No direct script access allowed');
class Model_Feestype extends CI_Model {
public function __construct() {
parent:: __construct();
}
public function create()
{
$insert_data = array(
'fees_type_name' => $this->input->post('fees_type_name'),
'fees_type_role' => $this->input->post('fees_type_role')
);
$status = $this->db->insert('tbl_fees_type', $insert_data);
return ($status === true ? true : false);
}
public function validate_feestypename()
{
$feestypeName = $this->input->post('fees_type_name');
$sql = "SELECT * FROM tbl_fees_type WHERE fees_type_name = ?";
$query = $this->db->query($sql, array($feestypeName));
return ($query->num_rows() == 1 ? true : false);
}
}
?>
,這是我的模式表單視圖PHP文件。
<div class="modal fade" tabindex="-1" role="dialog" id="addFeetype">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title">Add Fees Type</h4>
</div>
<form method="post" action="feestype/create" id="createFeetypeForm">
<div class="modal-body">
<div class="form-group">
<label for="fees_type_name">Fees Type Name</label>
<input type="text" class="form-control" id="fees_type_name" name="fees_type_name" placeholder="Fees Type Name">
</div>
<div class="form-group">
<label for="fees_type_name">Fees Type Role</label>
<select class="form-control" name="fees_type_role" id="fees_type_role">
<option></option>
<option>School Fees</option>
<option>Personal Fees</option>
</select>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="submit" class="btn btn-primary">Save changes</button>
</div>
</form>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
需要驗證的窗體看起來像這樣工作。 Form validation required working
這是我想要達到的樣品形式,它具有相同的源代碼,但它在笨(不HMVC)中運行,但它不是我的工作(HMVC)工作。
Woking callback validation should look like this
OMG這個工作。我只是做輕微的調整和改變 $這個 - > CI-> form_validation-> set_message-> set_message( 'validate_feestypename', '{本場}已經存在'); 到 $這個 - > form_validation-> set_message( 'validate_feestypename', '類型名稱已經存在的費用'); 它總體工作 – Cecatrix