gpt4 book ai didi

php - 没有实际形式的 CodeIgniter Form_Validation

转载 作者:可可西里 更新时间:2023-10-31 22:57:14 26 4
gpt4 key购买 nike

我想做的很简单(我希望如此):
我正在尝试使用 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 通过时我才想在数据库中进行更新。
如果输入为空,它会自行删除(这很好用)

解决方案
TRUE/FALSE 表是 here

if ($this->form_validation->required($key)){
//validation did not pass
echo 5;
}

如果有参数传递例如min_length[2];

$this->form_validation->min_length($key,'2');

最佳答案

这取决于您使用的 codeigniter 版本

codeigniter 3.0 :

您可以使用set_data 方法来验证您的自定义数据

$data = array(
'username' => 'johndoe',
'password' => 'mypassword',
'passconf' => 'mypassword'
);

$this->form_validation->set_data($data);

codeigniter 2.X:

设置$_POST手动值

   $_POST'username']  = 'johndoe';
$_POST['password'] ='mypassword';
$_POST['passconf'] = 'mypassword';

常见的:

谢天谢地,对于公共(public)部分,他们仍然在使用 form_validation->run()form_validation->set_rules(<SPECIFIC ATTRIBUTE RULES>)

关于php - 没有实际形式的 CodeIgniter Form_Validation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11787619/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com