验证规则我没发现错哪里了

#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帮忙在看看。、本人底子薄。。请教大神
1.jpg
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

1.jpg
打印结果是这样的。。后面是值 前面是数组  表单好像没问题。。我不用规则可以入库的,
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