laravel_基础_简单博客_RESTFul风格控制器(resource)

1. 创建控制器

php artisan make:controller PostController

2. 控制器里方法:

/**
         * 显示文章列表.
         *
         * @return Response
         */
        public function index()
        {
            //
        }

        /**
         * 创建新文章表单页面
         *
         * @return Response
         */
        public function create()
        {
            //
        }

        /**
         * 将新创建的文章存储到存储器
         *
         * @param Request $request
         * @return Response
         */
        public function store(Request $request)
        {
            //
        }

        /**
         * 显示指定文章
         *
         * @param int $id
         * @return Response
         */
        public function show($id)
        {
            //
        }

        /**
         * 显示编辑指定文章的表单页面
         *
         * @param int $id
         * @return Response
         */
        public function edit($id)
        {
            //
        }

        /**
         * 在存储器中更新指定文章
         *
         * @param Request $request
         * @param int $id
         * @return Response
         */
        public function update(Request $request, $id)
        {
            //
        }

        /**
         * 从存储器中移除指定文章
         *
         * @param int $id
         * @return Response
         */
        public function destroy($id)
        {
            //
        }
    }

【注意】:这几个方法是resource控制器基本方法,规定这么写,呵呵。。。

2.为控制器注册resource路由

routes.php中添加:

Route::resource('post','PostController');

该路由自动包涵多个子路由:

方法 路径 动作 路由名称
GET /post index post.index
GET /post/create create post.create
POST /post store post.store
GET /post/{post} show post.show
GET /post/{post}/edit edit post.edit
PUT/PATCH /post/{post} update post.update
DELETE /post/{post} destroy post.destroy

GET方式访问http://dev.mylaravel.com/post,则访问的是PostControllerindex方法,可以通过route('post.index')生成URL
POST方式访问http://dev.mylaravel.com/post,则访问的是PostControllerstore方法,可以通过route('post.store')来生成URL。

3. 控制器方法填充,实现增删改查

return Response
     */
    public function index()
    {
        $posts = Cache::get('posts',[]);
        if(!$posts)
            exit('Nothing');
        $html = '
    '; $html .= '

    帖子列表

    '
    ; $html .= ').'>发帖'; foreach ($posts as $key=>$post) { $html .= '
  1. 标题:'; $html .= ''post.show',['post'=>$key]).'">'.$post['title'].' '; $html .= ''post.destroy',['post'=>$key]).'">[删除]'; $html .= '
  2. '
    ; } $html .= '
'
; return $html; } /** * 创建新文章表单页面 * * @return Response */ public function create() { $postUrl = route('post.store'); $csrf_field = csrf_field(); $html = <<"$postUrl" method="POST"> $csrf_field 标题:type="text" name="title">

内容:

type="submit" value="提交"/> return $html; } /** * 将新创建的文章存储到存储器 * * @param Request $request * @return Response */ public function store(Request $request) { $title = $request->input('title'); $content = $request->input('content'); $post = ['title'=>trim($title),'content'=>trim($content)]; $posts = Cache::get('posts',[]); if(!Cache::get('post_id')){ Cache::add('post_id',1,60); }else{ Cache::increment('post_id',1); } $posts[Cache::get('post_id')] = $post; Cache::put('posts',$posts,60); // return redirect()->route('post.show',['post'=>Cache::get('post_id')]); return redirect()->route('post.index'); } /** * 显示指定文章 * * @param int $id * @return Response */ public function show($id) { $posts = Cache::get('posts',[]); if(!$posts || !$posts[$id]) exit('Nothing Found!'); $post = $posts[$id]; $editUrl = route('post.edit',['post'=>$id]); $indexUrl = route('post.index'); $html = <<{$post['title']}

{$post['content']}

"{$editUrl}">编辑 "{$indexUrl}">返回列表

return $html; } /** * 显示编辑指定文章的表单页面 * * @param int $id * @return Response */ public function edit($id) { $posts = Cache::get('posts',[]); if(!$posts || !$posts[$id]) exit('Nothing Found!'); $post = $posts[$id]; $postUrl = route('post.update',['post'=>$id]); $csrf_field = csrf_field(); $html = <<"$postUrl" method="POST"> $csrf_field type="hidden" name="_method" value="PUT"/> type="text" name="title" value="{$post['title']}">



type="submit" value="提交"/> return $html; } /** * 在存储器中更新指定文章 * * @param Request $request * @param int $id * @return Response */ public function update(Request $request, $id) { $posts = Cache::get('posts',[]); if(!$posts || !$posts[$id]) exit('Nothing Found!'); $title = $request->input('title'); $content = $request->input('content'); $posts[$id]['title'] = trim($title); $posts[$id]['content'] = trim($content); Cache::put('posts',$posts,60); return redirect()->route('post.show',['post'=>Cache::get('post_id')]); } /** * 从存储器中移除指定文章 * * @param int $id * @return Response */ public function destroy($id) { $posts = Cache::get('posts',[]); if(!$posts || !$posts[$id]) exit('Nothing Deleted!'); unset($posts[$id]); Cache::decrement('post_id',1); return redirect()->route('post.index'); } }

4. 使用

现在简单博客系统已经写好了,打开浏览器

get方式访问'/post/create':显示创建文章表单页面
get方式访问'/post':显示文章列表页面

【注意】:要删除文章,需要参考编辑表单伪造删除表单方法为DELETE(一般使用AJAX删除),这里没有用到视图,暂时不做演示。

你可能感兴趣的:(PHP,Laravel)