應用/配置/ form_validation.php
$config = array(
'search' => array(
array('field'=>'', 'label'=>'', 'rules'=>''),
array('field'=>'', 'label'=>'', 'rules'=>'')
),
);
-
控制器
public function search(){
//is ajax request?
if(!$this->input->is_ajax_request())
{
return show_error('Bad Request!'); // bye bye, stop execution
}
$this->output->set_status_header('200');
if(! $this->form_validation->run('search'))
{
echo json_encode(array(
'error' => 1,
'errors' => array(
'field' => form_error('field')
)
));
return; // bye bye, stop execution
}
//all good, continue executing
//.....
}
編輯
//For just a constructor
protected $isValidated = TRUE;
public function __construct(){
//check for valid ajax request
//do this in parent class(ajax_controller) ?
if(!$this->form_validation->run('search'))
{
$this->isValidated = FALSE;
return echo json_encode(array('error' => 1));
}
if($isValidated)
{
$this->_search($this->input->post());
}
}
protected function _search($input){}
-
class Ajax_Controller extends CI_Controller{
public function __construct(){
if(!$this->input->is_ajax_request())
{
return show_error('Bad Request!');
}
$this->output->set_status_header('200');
}
}
的形成要檢查確認在你的構造 – 2013-02-18 13:07:51
簡單的解決方案是移動的run()執行到搜索方法,這取決於如果你靠這個結果各種其他方法。你也可以添加一個靜態屬性來運行方法(包含run的類)來存儲最後的結果,並在設置時返回這個值,但是當數據/規則改變時你也需要重置它。你也可以添加isValid()來封裝這個邏輯......許多方法來解決這個問題。公開$錯誤是相當糟糕的,至少使它保密。 – Mahakala 2013-02-18 13:17:04
還有其他方法,不僅是'search'和表單驗證總是一樣的。 – lam3r4370 2013-02-18 13:20:18