TP5 一个标准的资源控制器写法,求指教讨论!

浏览:4328 发布日期:2016/09/10 分类:ThinkPHP5专区 关键字: thinkphp5
求讨论:一个标准的资源控制器下面写法是否准确可行,是不是一个优秀的标准;您怎么写,那里需要改进;欢迎讨论

假定:该控制器有数据列表(分页且带Get搜索)、新增数据(create)、修改数据(update)、删除数据(delete),新增和修改带验证器;必须使用模型,db不讨论。

特别注意讨论:带get搜索参数分页的数据列表你们都怎么处理的;在不开启控制器后缀的情况下,你们都是怎么处理模型别名的;可见我下面的代码是能用静态方法的就都用静态处理了,不能用的就重新new一下,你们的建议呢?

代码如下:<?php

namespace app\admin\controller;

use app\admin\model\Article as ArticleModel;
use think\Controller;
use think\Request;

class Article extends Controller
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index(Request $request)
    {
        $map = array();
        if (!empty($request->get('title'))){
            $map['title'] = array('like', '%'.(string)$request->get('title').'%');
        }
        //传param,使get搜索分页带参数
        $list = ArticleModel::where($map)->paginate(10,false,['query' => $request->param()]);

        $this->fetch('',compact('list'));
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        return $this->fetch();
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        $data = $request->post();
        $model = new ArticleModel($data);

        if (false === $model->validate(true)->allowField(true)->save($data)){
            return $this->error($model->getError());
        }

        return $this->success('新增成功');
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        $data = ArticleModel::get($id);
        $this->fetch('',compact('data'));

    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        $data = ArticleModel::get($id);
        $this->fetch('',compact('data'));
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        $data = $request->post();
        $model = new ArticleModel();

        if (false === $model->validate(true)->allowField(true)->save($data,['id' => $id])){
            return $this->error($model->getError());
        }

        return $this->success('修改成功');

    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        $data = ArticleModel::destroy($id);
        if ($data){
            $this->success('删除成功');
        }else{
            $this->error('删除失败');
        }
    }
}
最佳答案
评论( 相关
后面还有条评论,点击查看>>