MVC框架之留言板完成(二)

前端功能和布局我们已经完成了;

现在我们开始从后台来实现这些功能把;

①完成添加留言的功能;前端页面

{% extends "layout.html" %}
{% block content %}
<center>
    <form action="/index/save" method="post"><span style="color:#FF0000;">//使用from表单提交,提交到index/save动作中;</span>
        <table>
            <tr>
                <td>留言</td>
                <td><input type="text" name="text" placeholder="请留言"></td>
            </tr>
            <tr>
                <td><input type="reset" value="清空"></td>
                <td><input type="submit" value="提交"></td>
            </tr>
        </table>
    </form>
</center>
{% endblock %}
②在save方法中接收数据并连接model层;

因为我们使用的是框架;直接接收POST不安全;所以我们要制作一个post()方法;

这些方法我们集中放在common目录中function文件中;

<span style="color:#FF0000;">/*
 * 1:$name 对应值
 * 2:$default 默认值
 * 3:$fitt 过滤方法 'int'
 */</span>
function post($name,$default=false,$fitt=false)<span style="color:#FF0000;">//创建三个参数,一个必选项,两个配置项;false为布尔值所以不能用引号</span>
{
    if(isset($_POST[$name])){
        if($fitt){
            switch($fitt){
                case 'int':<span style="color:#FF0000;">//判断如果$fitt参数如果是int型则检测</span>
                    if(is_numeric($_POST[$name])){<span style="color:#FF0000;">//检测变量是否是数字</span>
                        return $_POST[$name];
                    }else{
                        return $default;
                    }
                break;
                default: ;
            }
        }else{
            return $_POST[$name];
        }
    }else{
        return $default;
    }
}

在控制器接收数据打包传到MODEL层;
 public function save()
    {
        //p($text);
        //echo $_POST['text'];
        session_start();
        $_SESSION['name']='XXX';

       //$text=$_POST['text'];
        $data['name']=$_SESSION['name'];
        $data['text'] = post('text');
        $data['datatime']=date('Y-m-d H:i:s');
        $model=new kModel();
        $str=$model->addOne($data);
        //p($str);die;
        if($str!='0'){
            jump('/index/index');<span style="color:#FF0000;">//添加成功需要跳转页面,所以我们还需要创建一个跳转方法;</span>
        }else{
            echo '添加失败';
        }
    }
model处理添加入库;
//添加留言
    public function addOne($data)
    {
        return $this->insert($this->table,$data);<span style="color:#FF0000;">//添加成功后返回值为添加主键值;失败则为0</span>
    }

在数据库中查看数据存在则,添加成功

跳转方法创建

function jump($url)
{
    header('location:'.$url);<span style="color:#FF0000;">//通过header跳转,所以我们只需要接收控制器和方法参数</span>
    exit();
}
③展示所有留言,我们需要用到index方法;同养需要调用model层提取数据库数据;
  //所有留言
    public function index()
    {
        $model=new kModel();
        $data=$model->all();
        //var_dump($data);exit;
        $this->assign('data',$data);<span style="color:#FF0000;">//传递数据到视图层</span>
        $this->display('index.html');<span style="color:#FF0000;">//连接视图层</span>
    }
modelc层
 //查询所有留言
    public function all()
    {
        $ret=$this->select($this->table,'*',['ORDER'=>['datatime'=>'ASC']]);
        //p($ret);exit;
        return $ret;<span style="color:#FF0000;">//返回查询到的数据</span>
    }
views层
{% extends "layout.html" %}
{% block content %}
<center>
    <form>
        <table>
            <tr>
                <td>姓名</td>
                <td>留言内容</td>
                <td>留言时间</td>
                <td>操作</td>
            </tr>
{% for val in data %}<span style="color:#FF0000;">//通过for循环把数组展示出来</span>
            <tr>
                <td>{{ val.name }}</td>
                <td>{{ val.text }}</td>
                <td>{{ val.datatime }}</td>
                <td><a href="/index/del/id/{{ val.id }}">删除</a></td>
            </tr>
{% endfor %}
    </table>
    </form>
</center>
{% endblock %}
④跟着展示我们顺便做一下删除功能;删除功能很简单,只需要把ID传递到控制器就行了
<td><a href="/index/del/id/{{ val.id }}">删除</a></td><span style="color:#FF0000;">//传递参数</span>
控制器接收数据,同post一样,我们需要做一个get方法验证参数;创建方法与post相同
//删除留言
    public function del()
    {
        $id=get('id',0,'int');
        if($id){
            $model=new kModel();
            $ret = $model->delOne($id);
            if($ret){
                jump('/');
            }else{
                exit('删除失败');
            }
        }else{
            exit('参数错误');
        }
        //p($id);
    }
创建get();
<span style="color:#FF0000;">/*
 * 1:$name 对应值
 * 2:$default 默认值
 * 3:$fitt 过滤方法 'int'
 */</span>
function get($name,$default=false,$fitt=false)
{
    if(isset($_GET[$name])){
        if($fitt){
            switch($fitt){
                case 'int':
                    if(is_numeric($_GET[$name])){<span style="color:#FF0000;">//检测变量是否是数字</span>
                        return $_GET[$name];
                    }else{
                        return $default;
                    }
                    break;
                default: ;
            }
        }else{
            return $_GET[$name];
        }
    }else{
        return $default;
    }
}
model层
 //删除留言
    public function delOne($id)
    {
        $ret = $this->delete($this->table,array(
            'id'=>$id
        ));
        if($ret !== false){
            return true;
        }else{
            return false;
        }
    }

删除成功;


这样,我们的mvc搭建,以及验证项目就已经完成了;

如果你觉得我们的框架过于简单,你还可以在我们的思想上继续完善框架,添加扩展,比如缓存丶cookie类丶session类丶上传文件等等;

这样我们的MVC搭建就算结束了






  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值