Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 修剪空格后在jQuery数据表中使用内联编辑进行验证_Php_Validation_Datatables_Datatables 1.10_Inline Editing - Fatal编程技术网

Php 修剪空格后在jQuery数据表中使用内联编辑进行验证

Php 修剪空格后在jQuery数据表中使用内联编辑进行验证,php,validation,datatables,datatables-1.10,inline-editing,Php,Validation,Datatables,Datatables 1.10,Inline Editing,使用jQuery datatable编辑器插件,以下代码按预期工作。它执行指定的验证(为了简洁起见,省略了一些字段) Editor::inst($db,“文件上传”) ->田地( Field::inst('id')->validator('Validate::notEmpty'), 字段::inst('name')->验证器('Validate::notEmpty')) ->验证器(函数($val、$data、$opts){ $length=strlen(修剪(preg_replace('/\s

使用jQuery datatable编辑器插件,以下代码按预期工作。它执行指定的验证(为了简洁起见,省略了一些字段)

Editor::inst($db,“文件上传”)
->田地(
Field::inst('id')->validator('Validate::notEmpty'),
字段::inst('name')->验证器('Validate::notEmpty'))
->验证器(函数($val、$data、$opts){
$length=strlen(修剪(preg_replace('/\s+/','$val));
return$length>30?“长度必须小于等于30个字符”:true;
})->getFormatter(函数($val、$data、$opts){
返回htmlspecialchars($val,ENT_报价,“UTF-8”);
})->setFormatter(函数($val、$data、$opts){
回位阀内件(预更换('/\s+/','$val));
}),
字段::inst('document_title')->验证器('Validate::notEmpty')
->验证器(函数($val、$data、$opts){
$length=strlen(修剪(preg_replace('/\s+/','$val));
return$length>50?“长度必须小于等于50个字符”:true;
})->getFormatter(函数($val、$data、$opts){
返回htmlspecialchars($val,ENT_报价,“UTF-8”);
})->setFormatter(函数($val、$data、$opts){
回位阀内件(预更换('/\s+/','$val));
}),
字段::inst('email_address')->验证器('Validate::notEmpty')
->验证器(函数($val、$data、$opts){
$length=strlen(修剪(preg_replace('/\s+/','$val));
return$length>60?“长度必须小于等于60个字符”:true;
})->getFormatter(函数($val、$data、$opts){
返回htmlspecialchars($val,ENT_报价,“UTF-8”);
})->setFormatter(函数($val、$data、$opts){
回位阀内件(预更换('/\s+/','$val));
})
)->其中(函数($q){
$q->where('file_type',“('jpg','jpeg','gif','png'),'IN',false);
})->流程(美元邮政)
->json();
但当验证逻辑稍微修改如下时

Editor::inst($db,“文件上传”)
->田地(
Field::inst('id')->validator('Validate::notEmpty'),
字段::inst('name')->验证器('Validate::notEmpty'))
->验证器(函数($val、$data、$opts){
$length=strlen(修剪(preg_replace('/\s+/','$val));
//以下行已修改
return$length==0?“此字段是必需的”:($length>30?“长度必须小于等于30个字符”:true);
})->getFormatter(函数($val、$data、$opts){
返回htmlspecialchars($val,ENT_报价,“UTF-8”);
})->setFormatter(函数($val、$data、$opts){
回位阀内件(预更换('/\s+/','$val));
}),
字段::inst('document_title')->验证器('Validate::notEmpty')
->验证器(函数($val、$data、$opts){
$length=strlen(修剪(preg_replace('/\s+/','$val));
//以下行已修改
return$length==0?“此字段是必需的”:($length>50?“长度必须小于等于50个字符”:true);
})->getFormatter(函数($val、$data、$opts){
返回htmlspecialchars($val,ENT_报价,“UTF-8”);
})->setFormatter(函数($val、$data、$opts){
回位阀内件(预更换('/\s+/','$val));
}),
字段::inst('email_address')->验证器('Validate::notEmpty')
->验证器(函数($val、$data、$opts){
$length=strlen(修剪(preg_replace('/\s+/','$val));
//以下行已修改
return$length==0?“此字段为必填项”:($length>60?“长度必须小于等于60个字符”:true);
})->getFormatter(函数($val、$data、$opts){
返回htmlspecialchars($val,ENT_报价,“UTF-8”);
})->setFormatter(函数($val、$data、$opts){
回位阀内件(预更换('/\s+/','$val));
})
)->其中(函数($q){
$q->where('file_type',“('jpg','jpeg','gif','png'),'IN',false);
})->流程(美元邮政)
->json();
在这种情况下,验证将按其应该的方式执行,但不会将值提交(同时数据表也不会更新)到数据库。按enter键后,内联编辑文本框保持打开状态

原因可能是什么?如何解决?可能,我缺少了一些关于PHP的非常基本的东西

如果需要,我将发布相应的客户端脚本


当强制执行额外条件阻止输入值提交到抽象层数据库时,似乎会触发其他验证器。在内联单元格编辑的情况下不应发生这种情况


补救方法是什么?

如果对代码的唯一更改是您用注释突出显示的那些行,我怀疑问题在于您使用了嵌套的三元运算符。PHP标记中的这些单独的操作可能会清除一些问题,但基本上快速版本是PHP三元运算符有一些奇怪的行为,因此不建议使用嵌套的操作。我建议您尝试切换到标准的if/else语句,看看这是否解决了您的问题,所以

if($length === 0){
    return 'This field is required';
}
else if($length > 50){
    return 'Length must be 50 characters or less';
}
else{
    return true;
}
虽然这可能会更长,但调试可能会容易得多,根据您的问题,我怀疑如果这是所有更改的内容,那么您的问题将归结为:;而在几乎所有其他语言中,三元运算符都是右联想的

这里推荐使用PHP中的嵌套三元运算符

点击submit后保持打开状态的文本框是DataTables JavaScript表单错误的标准设置,这在CRUD操作服务器端未向客户端返回预期值时很常见