[英]Error with form_validation in Codeigniter
我在codeigniter中使用以下代碼,並出現錯誤,因為form_validation沒有運行。請幫助我解決問題。控制器中的代碼是:
public function event_desc()
{
$this->form_validation->set_error_delimiters('<div class="error">', '</div>');
$this->form_validation->set_rules('event_title','Event Title','required|max_length[40]');
$this->form_validation->set_rules('event_desc','Event Description','required');
$this->form_validation->set_rules('event_cat','Event Category','required|callback_is_default');
$this->form_validation->set_rules('event_date','Event Date','required|date');
$this->form_validation->set_rules('event_venue','Event Venue','required||max_length[25]');
$this->form_validation->set_rules('event_charges','Event Charges','required');
if($this->form_validation->run()== FALSE)
{
echo "error";
$this->is_logged_in();
}
else
{
echo "success";
$userId = $this->ion_auth->get_user_id();
$data=array(
'cat_id '=> $this->input->post('event_cat'),
'user_id' => $userId,
'event_title' => $this->input->post('event_title'),
'event_desc' => $this->input->post('event_desc'),
'event_date' => $this->input->post('event_date'),
'event_venue' => $this->input->post('event_venue'),
'event_charges' => $this->input->post('event_charges'),
);
$this->load->model('event_model');
$this->event_model->add_event_record($data);
$this->index();
}
}
public function _is_default($str)
{
if ($str != 'yes' && $str != 'no')
{
$this->form_validation->set_message('_check_select_yes_or_no', 'Please select yes or no for the %s field');
return FALSE;
}
else
{
return TRUE;
}
}
當我插入數據並提交時,如果form_validation()運行為false,則顯示“錯誤”,因為我回顯了“錯誤”。 我在View中的代碼是:
<?php echo form_open('profile/event_desc'); ?>
<div class="event_wrapper">
<div class="label_content">
<div class="event_details">Event Title</div>
<input type="text" name="event_title" id="event_title" />
<?php echo form_error('event_title','<div class="error_event">','</div>');?>
</div><!-- end of label_content-->
<div class="label_content">
<div class="event_details">Event Description</div>
<textarea name="event_desc" id="event_desc"></textarea>
<?php echo form_error('event_desc','<div class="error_event">','</div>')?>
</div><!-- end of label_content-->
<div class="label_content">
<div class="event_details"> Event Category</div>
<select name="event_cat" id="eventcat">
<option value="select">_Select one_</option>
<option value="1">Informational Technology</option>
<option value="2">Education</option>
<option value="3">Entertainment</option>
<option value="4">Sports</option>
<option value="5">Seminars</option>
<option value="6">Research</option>
<option value="7">Science</option>
</select>
<?php echo form_error('event_cat','<div class="error_event">','</div>')?>
</div><!-- end of label_content-->
<div class="label_content">
<div class="event_details"> Event Date</div>
<input type="datetime" name="event_date" value="" id="event_title"/>
<?php echo form_error('event_date','<div class="error_event">','</div>')?>
</div>
<div class="label_content">
<div class="event_details"> Event Venue</div>
<input type="datetime" name="event_venue" value="" id="event_title"/>
<?php echo form_error('event_venue','<div class="error_event">','</div>')?>
</div>
<div class="label_content">
<div class="event_details"> Event Charges</div>
<input type="datetime" name="event_charges" value="" id="event_title"/>
<?php echo form_error('event_charges','<div class="error_event">','</div>')?>
</div>
<div class="label_content">
<div class="submit_gap">
<button type="submit" class="signin">Upload</button>
</div>
請幫助我找出錯誤。
根據codeigniter文檔-嘗試將回調從_is_default更改為is_default。
$this->form_validation->set_rules('username', 'Username', 'callback_username_check');
public function username_check($str){ /*code*/ }
我查看了您的代碼,發現了以下問題。
此規則是錯誤的,它包含兩個| 而不是一個。 所以正確的規則是
$this->form_validation->set_rules('event_venue','Event Venue','required|max_length[25]');
您的回調永遠不會是正確的,因為您不會從選擇菜單中返回“是”或“否”,因此正確的回調應該是。
public function is_default($str) { if ($str == 'select') { $this->form_validation->set_message('is_default', 'Please select yes or no for the %s field'); return FALSE; } else { return TRUE; } }
將此部分替換為您的代碼,它將起作用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.