ThinkPHP mvc新理解如何做数据的添加操作与验证

来源:互联网 发布:不可思议的妈妈 知乎 编辑:程序博客网 时间:2024/06/06 10:54

mvc 新理解

1:将要使用jquery 引入validate验证表单字段信息,将百度的editor引入作为文本的编辑器。


2:对表单的验证字段做验证,下面是使用validate的方法,首先确保正确的引入了文件,接着我们就可以通过以下方法来对表单进行验证了,例如我在html文件中要验证的字段为:

 <div class="controls-group" style="width:90%;margin:auto">                <input class="span10" type="hidden" name="info[id]" value="{$info.id}" >                <input class="span10" type="text" placeholder="文章标题" name="info[title]" value="{$info.title}" >            </div>

那么我们自己定义的script里面就该这么写:

function checkText(){     return $("#addBbsform").validate({         /* 设置验证规则 */           rules : {            "info[title]" : {                required : true                     }                            },        /* 设置错误信息 */           messages : {            "info[title]" : {                required : '请输入标题'                       }           }    });     }

3:做完了表单的前端简单验证,接下来我们要做的就是对于表单提交过来的数据进行验证通过jquery进行异步提交数据做后台验证

$(function(){     $("#btnSubmit").click(function(){        if(!checkText().form()) return;             // 后台提交                      $( "#addBbsform").ajaxSubmit({             type: 'POST',            url : $('#addBbsform').attr('action'),   // data: $('#schoolAreaform').serialize(),                 dataType: 'JSON',               success: function(data){                                                                        if(data=='ok'){                       $('#divErrorMessage').show();                                  $('#notice_message').html("帖子信息保存成功!");                        location.href="__URL__/schoolAreaList";                  }                            },            error: function(data) {                              $('#divErrorMessage').show();                          $('#notice_message').html("保存帖子信息失败!");                                        }        });          });   });

4:将数据提交到了控制器中,那么接下来对数据进行处理。具体的处理为:

 public function addBbs(){        $info = my_array_map('trim', I('info'));        if ( !empty($info['title'])  ) {            $tiebaLogic = new TiebaLogic();            if ( $tiebaLogic->editTieba( $info ) === FALSE ) {                $returnCode = 1;                $returnData = $tiebaLogic->getError();                if ( is_array($returnData) ) {                    $returnData = "\r\n<p>* " . implode("</p>\r\n<p>* ", $returnData) . "</p>\r\n";                }                else{                    $returnData = "\r\n<p>* " .  $returnData . "</p>\r\n";                }            } else {                $returnCode = 0;                $returnData = 'ok';            }            $this->ajaxReturn($returnData, $returnCode);        }        $this->display();    }

在这里我们对提交的数组信息进行处理,我们在前端将数据都放在了name = “info[]”这个数组中

<div class="controls-group" style="width:90%;margin:auto">    <input class="span10" type="text" placeholder="副标题" name="info[subhead]" value="{$active[0]['subhead']}" > </div><div class="controls-group" style="width:90%;margin:auto">    <input type="text" class="span10" placeholder="作者" name="info[writer]"  name="title" value="{$active[0]['writer']}" ></div>

那么怎么拿到info[]呢?可以通过下面的这个方法获取到:

//获取infofunction my_array_map($callback, array $array) {    $des = array_map($callback, $array);    foreach ( $array as $k => $item ) {        if ( gettype($item) == 'array' ) {            $des[$k] = my_array_map($callback, $item);        }    }    return $des;}

接下来在ModelNamelogic.class.php对数据进行处理为:

    private $error = NULL;    //获取错误信息    public function getError(){        $this->error();    }    //一为修改二为添加操作    public function editTieba(array $info){        $tiebaModel = new TiebaModel();        if(!empty($info['id'])){            //如果存在ID则为修改        }else{            //不存在则为添加            if($tiebaModel->addTiebaInfo($info) === FALSE){                $this->error = $tiebaModel->getError();                return false;            }        }        return true;    }

这里具体的添加方式我们将其放在了ModelNameModel.class.php中

//添加public function addTiebaInfo($info){        $now = time();        $info['date'] = $now;        $tiebaModel = new TiebaModel();        if($tiebaModel->create($info) === false){     //判断tp中两个添加操作是否正确?            $this->error = $tiebaModel->getError();            return false;        }        if($tiebaModel->add($info) === false){            $this->error = $tiebaModel->getError();            return false;        }        return true;    }

5:那么我们返回的提示信息以后就完成了数据的异步添加操作了。

if ( $tiebaLogic->editTieba( $info ) === FALSE ) {    $returnCode = 1;    $returnData = $tiebaLogic->getError();    if ( is_array($returnData) ) {        $returnData = "\r\n<p>* " . implode("</p>\r\n<p>* ", $returnData) . "</p>\r\n";    }    else{        $returnData = "\r\n<p>* " .  $returnData . "</p>\r\n";    } } else {    $returnCode = 0;    $returnData = 'ok'; }    $this->ajaxReturn($returnData, $returnCode);
0 0