0
我有一個CI表單,需要一個十進制數的字段。目前,當字段未通過驗證時,用戶將收到無用的消息。 「該字段必須是小數」。對於認爲他們應該能夠使用領先時期的用戶而言,這是一種糟糕的用戶體驗。例如。」 4" 。我正在嘗試創建自定義回調驗證函數以實現自定義錯誤消息。這裏是我的控制器(簡體)...自定義回調驗證功能實現自定義錯誤消息
<?php
class Form extends CI_Controller {
function index()
{
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->form_validation->set_rules('expenses', 'Expenses', 'trim|max_length[50]|callback_decimalcustom|xss_clean');
if ($this->form_validation->run() == FALSE)
{
$parent_data = array('country' => $countrydata, 'currency' => $currencydata, 'tour' => $tourdata, 'riders' => $ridersdata, 'measurement' => $measurementdata, 'tourdistance' => $tourdistance);
$this->load->view('myform', $parent_data);
}
else
{
$sql= array (
'expenses'=>$this->input->post('expenses'),
);
$ins = $this->db->insert('donations',$sql);
$this->load->view('formsuccess');
}
}
public function decimalcustom($str) //Custom decimal message
{
if (preg_match('/^[\-+]?[0-9]+\.[0-9]+$/', $str))
{
$this->form_validation->set_message('decimalcustom', 'The %s field is required in 0.00 format.');
return FALSE;
}
else
{
return TRUE;
}
}
}
?>
測試時,不會引發錯誤,自從我從十進制十進制定製改變了驗證。我錯過了什麼嗎?
謝謝,這似乎現在工作。 –
你知道我如何在這個陳述中添加允許空/空嗎?如果表單爲空,即使我沒有設置「必需」,它也會拋出錯誤。 –
我不確定這個正則表達式,但你可以簡單地做: (!preg_match('/^[\ - +]?[0-9] + \。[0-9] + $ /',$ str)| |空($ str)) – lokers