laravel_基础_简单博客_RESTFul风格控制器(resource)
2016-06-29 23:19
405 查看
1.创建控制器
php artisan make:controller PostController
控制器里方法:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; class PostController extends Controller { /** * 显示文章列表. * * @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 |
以POST方式访问http://dev.mylaravel.com/post,则访问的是PostController的store方法,可以通过route(‘post.store’)来生成URL。
3.控制器方法填充,实现增删改查
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use Cache; class PostController extends Controller { /** * 显示文章列表. * * @return Response */ public function index() { $posts = Cache::get('posts',[]); if(!$posts) exit('Nothing'); $html = '<ol>'; $html .= '<h2>帖子列表</h2>'; $html .= '<a href='.route('post.create').'>发帖</a></h2>'; foreach ($posts as $key=>$post) { $html .= '<li>标题:'; $html .= '<a href="'.route('post.show',['post'=>$key]).'">'.$post['title'].'</a> '; $html .= '<a href="'.route('post.destroy',['post'=>$key]).'"><font color="red">[删除]</font></a>'; $html .= '</li>'; } $html .= '</ol>'; return $html; } /** * 创建新文章表单页面 * * @return Response */ public function create() { $postUrl = route('post.store'); $csrf_field = csrf_field(); $html = <<<CREATE <form action="$postUrl" method="POST"> $csrf_field 标题:<input type="text" name="title"><br/><br/> 内容:<textarea name="content" cols="50" rows="5"></textarea><br/><br/> <input type="submit" value="提交"/> </form> CREATE; 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 = <<<DETAIL <h3>{$post['title']}</h3> <p>{$post['content']}</p> <p> <a href="{$editUrl}">编辑</a> <a href="{$indexUrl}">返回列表</a> </p> DETAIL; 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 = <<<UPDATE <form action="$postUrl" method="POST"> $csrf_field <input type="hidden" name="_method" value="PUT"/> <input type="text" name="title" value="{$post['title']}"><br/><br/> <textarea name="content" cols="50" rows="5">{$post['content']}</textarea><br/><br/> <input type="submit" value="提交"/> </form> UPDATE; 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删除),这里没有用到视图,暂时不做演示。
相关文章推荐
- workerman结合laravel开发在线聊天应用的示例代码
- 简单对比分析Ruby on Rails 和 Laravel
- laravel安装zend opcache加速器教程
- 使用 PHPStorm 开发 Laravel
- 跟我学Laravel之请求与输入
- 跟我学Laravel之视图 & Response
- PHP IDE PHPStorm配置支持友好Laravel代码提示方法
- Laravel 5.0 发布 新版本特性详解
- 详解PHP的Laravel框架中Eloquent对象关系映射使用
- 深入解析PHP的Laravel框架中的event事件操作
- 推荐几款用 Sublime Text 开发 Laravel 所用到的插件
- Laravel中使用阿里云OSS Composer包分享
- Laravel 4 初级教程之Pages、表单验证
- Laravel框架表单验证详解
- Laravel框架中扩展函数、扩展自定义类的方法
- Laravel 4 初级教程之安装及入门
- laravel安装和配置教程
- PHP开发框架laravel安装与配置教程
- 跟我学Laravel之安装Laravel
- 跟我学Laravel之配置Laravel