私がやろうとしていることは非常に単純です (願っています): Form_Validation
を使用して POST データ (またはvariableを介して提供されるデータ) を検証しようとしています。
問題は、実際の検証を実行するには、私/私たちが行う必要があることです
if ($this->form_validation->run() == FALSE){
//validation did not pass
}else{
//validation did pass
}
私の一連のルールは次のようなものです:
$this->form_validation->set_rules('key', '', 'trim|required'); //simplified
だから、明らかにこのスクリプトにAJAX経由でデータを送信しています
echo $_POST['key']; //prints valid value that is sent from AJAX
form_validation を使用して $_POST['key'] を検証するにはどうすればよいですか?
AJAX コード
$("#key-inputs .short, #key-inputs .long").change(function () {
var key = $(this).val();
var id = $(this).attr('name');
var table = $(this).attr('class');
var file = $('span .file').val();
var data = 'NULL';
$.post(file + "/edit",{
id:id,
key:key,
file:file,
table:table},
function(code, textStatus) {
data = code;
});
$(this).ajaxStop(function(){
if (data == 3) $(this).parent().fadeOut('slow', function() {}); //delete
if (data == 2) $(this).fadeOut(200).fadeIn(200); //update
if (data == 5) alert('not valid'); //update parameter is not valid input (depends on set_value rules)
//writeConsole(previous.val().outerHTML);
});
});
PHPコード//簡略化
if (!$this->input->is_ajax_request()) redirect('lang/translate/keys/'.$param);
//do work here
if ($key == "") {
//delete key
$this->lang_translate_model->DeleteKey($id, $table);
echo 3;
return TRUE;
}
$this->form_validation->set_rules('key', 'key', 'trim|required|max_length[56]|xss_clean|unique_file[lang_key:'.$param.']');
if ($this->form_validation->run() == FALSE){
//validation did not pass
echo 5;
}
だから私はいくつかの(生成された)入力を持っています..set_rulesが合格した場合にのみ、変更時にDBで更新したいと思います。
入力が空の場合、それ自体が削除されます (これは正常に機能します)
ソリューション
TRUE/FALSE テーブルはこちら
if ($this->form_validation->required($key)){
//validation did not pass
echo 5;
}
たとえば、渡すパラメータがある場合min_length[2]
。
$this->form_validation->min_length($key,'2');