验证规则我没发现错哪里了
发布于:2022-01-17 09:50:54
#1 daixingchen0
//验证规则
var $verifier = array
(
"rules" => array( // 规则
's_fenlei' => array('notnull' => true,'minlength' => 6,'maxlength' => 60,),
),
"messages" => array( // 提示信息
's_fenlei' => array('notnull' => "分类不能为空!",'minlength' => "分类名必须大于6个字符",'maxlength' => "分类名不能超过60个字符",),
)
);
分类明明不为空,却老提示我分类为空
2013-07-24 15:59:15
#2 jake
请下载例子对应修改你的代码。或者提前用empty函数看看你的分类是否为空。
PS:求助贴请发到求助问答区,谢谢。本贴转移
2013-07-24 16:17:52
#3 daixingchen0
分类不为空, 我echo $this->spArgs('sang_fenlei') ; 这个好使。就是验证的时候触发第一个提示信息
2013-07-24 16:25:00
#4 daixingchen0
我也是刚刚入手speedphp 感觉和phpcms差不多。。喜欢这个框架。。希望把例子连接发给我下。。我找不到。。:P
2013-07-24 16:27:27
#5 jake
按照你上面的验证规则,应该是看
echo $this->spArgs('s_fenlei') ;
2013-07-24 16:54:10
#6 daixingchen0
模型文件
class sang extends spModel
{
var $pk = "s_id";
var $table = "sang"; // 数据表的名称
//验证规则
var $verifier = array
(
"rules" => array( // 规则
'sang_fenlei' => array('notnull' => TRUE,'minlength' => 6,'maxlength' => 60,),
),
"messages"=> array( // 提示信息
'sang_fenlei' => array('notnull' => "分类不能为空!",'minlength' => "分类名必须大于6个字符",'maxlength' => "分类名不能超过60个字符",'youare' => "未知规则",),
)
);
}
控制器
function userAddAction(){
//商家信息入库
$userb = spClass("sang");
$sang_add = array(
's_fenlei' => $this->spArgs('sang_fenlei'),
's_title' => $this->spArgs('sang_title'),
's_name' => $this->spArgs('sang_name'),
's_img' => $this->spArgs('sang_img'),
's_address' => $this->spArgs('sang_addreess'),
's_call' => $this->spArgs('sang_call'),
's_contents' => $this->spArgs('sang_mx'),
's_city' => $this->spArgs('sang_city'),
);
//spVerifier数据验证
if ( false == $userb->spVerifier($this->spArgs())) {
$userb->create($sang_add);
$this->success("添加成功!", spUrl("admin", "userli"));
}else{
//$this->success("请正确填写信息!");
foreach ($userb as $item) {
foreach ($item as $msg){
$this->error($msg, spUrl("admin", "addren"));
}
}
}
}
请jake帮忙在看看。、本人底子薄。。请教大神{:soso_e112:}
2013-07-24 17:10:52
#7 daixingchen0
daixingchen0 发表于 2013-7-24 17:10
模型文件控制器请jake帮忙在看看。、本人底子薄。。请教大神
class sang extends spModel
{
var $pk = "s_id";
var $table = "sang"; // 数据表的名称
//验证规则
var $verifier = array
(
"rules" => array( // 规则
's_fenlei' => array('notnull' => TRUE,'minlength' => 6,'maxlength' => 60,),
),
"messages"=> array( // 提示信息
's_fenlei' => array('notnull' => "分类不能为空!",'minlength' => "分类名必须大于6个字符",'maxlength' => "分类名不能超过60个字符",'youare' => "未知规则",),
)
);
}
?>
s_fenlei 和sang_fenlei 我都试了。。规则的结果全是数组array 。。顺便告诉下s_fenlei 和sang_fenlei 哪个对
2013-07-24 17:19:26
#8 jake
1. $sang_add = array $userb->spVerifier($this->spArgs())
应该是 $userb->spVerifier($sang_add )
2. dump一下$this->spArgs('sang_fenlei')看看是不是数组,如果是数组那就是表单写错了。
2013-07-24 20:25:08
#9 daixingchen0
打印结果是这样的。。后面是值 前面是数组 表单好像没问题。。我不用规则可以入库的,
jake大神。帮帮忙啦。。非常感谢
2013-07-25 08:09:23
#10 daixingchen0
打印的是值, 但是 $this->error($msg, spUrl("admin", "addren")); 这个是数组:(
2013-07-25 08:10:41
#11 jake
jake 发表于 2013-7-24 20:25
1. $sang_add = array $userb->spVerifier($this->spArgs())
应该是 $userb->spVerifier($sang_add )
第1条看明白了吗?
2013-07-25 08:42:56
#12 daixingchen0
function userAddAction(){
//商家信息入库
$userb = spClass("sang");
$sang_add = array(
's_fenlei' => $this->spArgs('sang_fenlei'),
's_title' => $this->spArgs('sang_title'),
's_name' => $this->spArgs('sang_name'),
's_img' => $this->spArgs('sang_img'),
's_address' => $this->spArgs('sang_addreess'),
's_call' => $this->spArgs('sang_call'),
's_contents' => $this->spArgs('sang_mx'),
's_city' => $this->spArgs('sang_city'),
);
//spVerifier数据验证
if (false == $userb->spVerifier($sang_add)) {
$userb->create($sang_add);
$this->success("添加成功!", spUrl("admin", "alist"));
}else{
//dump($this->spArgs('sang_fenlei'));
//$this->success("请正确填写信息!");
foreach ($userb as $item) {
foreach ($item as $msg){
$this->error($msg, spUrl("admin", "addren"));
}
}
}
}
主要就是这个代码有错误。但是我技术低 实在是不知道问题出现在哪里。。jake大神 帮看看,谢谢了
2013-07-25 08:53:59
#13 jake
试试这样的代码看显示什么
function userAddAction(){
//商家信息入库
$userb = spClass("sang");
$sang_add = array(
's_fenlei' => $this->spArgs('sang_fenlei'),
's_title' => $this->spArgs('sang_title'),
's_name' => $this->spArgs('sang_name'),
's_img' => $this->spArgs('sang_img'),
's_address' => $this->spArgs('sang_addreess'),
's_call' => $this->spArgs('sang_call'),
's_contents' => $this->spArgs('sang_mx'),
's_city' => $this->spArgs('sang_city'),
);
dump($this->spArgs('sang_fenlei'));
echo strlen($this->spArgs('sang_fenlei'));
dump($sang_add);
dump($sang_add['s_fenlei']);
echo strlen($sang_add['s_fenlei']);
dump($userb->spVerifier($sang_add));
}
2013-07-25 09:15:03
#14 daixingchen0
0
Array
(
[s_fenlei] =>
[s_title] =>
[s_name] =>
[s_img] =>
[s_address] =>
[s_call] =>
[s_contents] =>
[s_city] =>
)
0
Array
(
[s_fenlei] => Array
(
[0] => 分类不能为空
[1] => 分类少于6个字符
)
)
有点看不懂。。呵呵 希望解释下
2013-07-25 10:22:26
#15 jake
dump($this->spArgs('sang_fenlei')); // 显示是空,也就是分类提交上来没东西
echo strlen($this->spArgs('sang_fenlei'));// 显示0,strlen是检查长度,因为分类是空,所以长度是0
dump($sang_add); // 显示是数组,但看起来全部都是空
估计是表单错了。
2013-07-25 10:33:09
#16 daixingchen0
这个是我查看源码的代码,请大神指教下。。呵呵。。辛苦你了。
2013-07-25 10:42:46
#17 jake
dump($this->spArgs());
看看表单提交了什么
2013-07-25 11:08:19
#18 daixingchen0
Array
(
[s_fenlei] => 1
[s_title] => 2
[s_name] => 3
[s_img] => 4
[s_address] => 5
[s_call] => 6
[s_contents] => 7
[s_city] => 8
)
代码
function userAddAction(){
//商家信息入库
$userb = spClass("sang");
$sang_add = array(
's_fenlei' => $this->spArgs('sang_fenlei'),
's_title' => $this->spArgs('sang_title'),
's_name' => $this->spArgs('sang_name'),
's_img' => $this->spArgs('sang_img'),
's_address' => $this->spArgs('sang_addreess'),
's_call' => $this->spArgs('sang_call'),
's_contents' => $this->spArgs('sang_mx'),
's_city' => $this->spArgs('sang_city'),
);
dump($sang_add); die();
}
表单数据正确啊。{:soso_e117:}
2013-07-25 11:23:06
#19 jake
提交的是s_fenlei,你获取的是sang_fenlei
2013-07-25 12:34:16
#20 daixingchen0
谢谢。这回对了。。我获取数据库字段了。。呵呵。。 新人。。谅解啊 大神:P
2013-07-25 13:03:12