一.资源控制器

  1. 声明:资源控制器是某个特定场景下的产物,完全理解需要 PHP 项目基础;
  2. 比如开发过博客系统,留言帖子系统之类,具有类似思维,否则你懂的…;
  3. 只是学习了 PHP 基础,就立刻学习框架的同学,可以过一遍即可(不影响后续)…;
  4. 有一种控制器专门处理 CURD(增删改查),方法很多且方法名基本固定;
  5. 对于这种控制器,我们可以将它设置为资源型控制器,不要大量设置路由;
  6. 这里推荐直接使用命令行生成资源路由,比如:BlogController;
php artisan make:controller BlogController --resource
  1. 生成了的资源控制器会产生 7 个方法,配置好路由后会自动生成相关内容
Route::resource('blogs', 'BlogController'); //单个资源路由
//批量定义资源路由
Route::resources([ 'blogs' => 'BlogController' ]);


BlogController.php:

<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;class BlogController extends Controller
{/*** Display a listing of the resource.** @return \Illuminate\Http\Response*/public function index(){//return 'index';}/*** Show the form for creating a new resource.** @return \Illuminate\Http\Response*/public function create(){//}/*** Store a newly created resource in storage.** @param  \Illuminate\Http\Request  $request* @return \Illuminate\Http\Response*/public function store(Request $request){//}/*** Display the specified resource.** @param  int  $id* @return \Illuminate\Http\Response*/public function show($id){//}/*** Show the form for editing the specified resource.** @param  int  $id* @return \Illuminate\Http\Response*/public function edit($id){echo route('blogs.index');echo '<br>';echo route('blogs.edit',['blog'=>110]);echo '<br>';return 'edit id:' . $id;}/*** Update the specified resource in storage.** @param  \Illuminate\Http\Request  $request* @param  int  $id* @return \Illuminate\Http\Response*/public function update(Request $request, $id){//}/*** Remove the specified resource from storage.** @param  int  $id* @return \Illuminate\Http\Response*/public function destroy($id){//}
}


  1. 如果我们注册了资源路由,那么如上图的资源路由 URI 和名称均自动创建生效; http://localhost:8000/blogs/10/edit //可以访问到 edit 方法
    return route(‘blogs.store’); //可以通过助手 route()了解是否注册

  2. 还有一条命令可以直接查看目前可用的路由以及命名; php artisan route:list

  3. 我们也可以限制资源路由只开放部分方法或排除部分方法,可以用命令查看;

//只有 index(),show()可访问
Route::resource('blogs', 'BlogController') ->only(['index', 'show']); //排除 index(),show()的其它方法可访问
Route::resource('blogs', 'BlogController') ->except(['index', 'show']);
  1. 资源控制器还有一种不需要 HTML 页面方法的 API 路由,只提供数据接口;
 //API 资源,并不需要 HTML 页面(create,edit),会排除 Route::apiResource('blogs', 'BlogController');//批量方式Route::apiResources([ 'blogs' => 'BlogController' ]);
  1. 当然,也支持一开始就生成一个不包含 HTML 页面方法的资源控制器;
  2. 要注意的是,对应的资源路由,直接使用 api 资源路由即可; php artisan make:controller CommentController --api
Route::apiResource('comments', 'CommentController');

七、PHP框架Laravel学习笔记——资源控制器相关推荐

  1. 二、PHP框架Laravel学习笔记——路由的定义和控制器

    一.路由的定义 什么是路由?路由就是提供接受 HTTP 请求的路径,并和程序交互的功能: 简单点理解,就是为了提供访问程序的 URL 地址,所做的一些设置工作: phpstorm 支持 cmd 操作, ...

  2. 十、PHP框架Laravel学习笔记——数据库配置入门

    一.配置数据库 框架支持原生.查询构造器和 Eloquent ORM(关系型对象映射器)来操作数据库: 数据库的配置在 config/database.php,如果是本地可以直接配置.env 文件: ...

  3. 三、PHP框架Laravel学习笔记——路由参数、重定向、视图

    一.路由参数 我们已经学习了部分路由参数的功能,比如动态传递{id}: 那么,有时这个参数需要进行约束,我们可以使用正则来限定必须是数字: Route::get('task/read/{id}', ' ...

  4. 三十、PHP框架Laravel学习笔记——模型的预加载

    一.预加载 预加载,就是解决关联查询中产生的 N+1 次查询带来的资源消耗 我们要获取所有书籍的作者(或拥有者),普通查询方案如下: //获取所有书籍列表 $books = Book::all(); ...

  5. 二十、PHP框架Laravel学习笔记——模型的作用域

    一.本地作用域 很多情况下,我们在数据查找时有一部分条件会被重复且大量使用: 而这个条件,可能只是在这个模型对应的数据表使用,别的表并不使用: 那么这种情况,可以使用本地作用域的方式,将常用的 SQL ...

  6. 十七、PHP框架Laravel学习笔记——模型的定义

    一.默认设置 框架可以使用 Eloquent ORM 进行数据库交互,也就是关系对象模型: 在数据库入门阶段,我们已经创建了一个 User.php 模型,如下: php artisan make:mo ...

  7. 八、PHP框架Laravel学习笔记——表单伪造和 CSRF 保护

    一.表单伪造 之前一直用的 GET 请求方式,而表单可以实现 POST 方式,我们来实验下: 先在 TaskController 创建两个方法,一个表单页,一个接受表单数据路由: public fun ...

  8. 六、PHP框架Laravel学习笔记——响应设置和重定向

    一.响应设置 路由和控制器处理完业务都会返回一个发送到浏览器的响应:return: 比如字符串会直接输出,而数组则会输出 json 格式,本身是 Response 对象: return [1, 2, ...

  9. 五、PHP框架Laravel学习笔记——回退、当前路由、单行为

    一.单行为控制器 之前的课程,我们简单的创建和定义了控制器,并继承了控制器基类: 为何要继承基类?因为继承基类后,可以使用基类的方法,比如中间件等: 继承基类后除了支持中间件快捷使用,还支持验证.列队 ...

最新文章

  1. java 变量的线程可见性_Java多线程——变量可见性
  2. 90后教授:回国是用数学计算出的“最优解”
  3. 在VM6.5正式版中安装ESX Server 3.5的办法
  4. centos php sftp 扩展,Linux(CentOS)上配置 SFTP
  5. 从杂技表演到日剧BGM(r12笔记第23天)
  6. CF986C AND Graph
  7. flutter倒计时TimerUtil工具类
  8. 访问 JSON 对象的值
  9. flask response响应
  10. 怎么学习前端开发?求推荐学习路线?
  11. ASP.Net学习笔记015--ASP.Net中使用Cookie
  12. 西华大学c语言考试题,西华大学C语言程序设计复习题
  13. 日系背景色RGB,CMYK数值
  14. adb server is out of date. killing... 解决方案
  15. js刻度尺插件_html5 canvas+js刻度尺代码
  16. Calc3: Partial Derivative
  17. ISO7816协议中psam卡片的延时单元etu
  18. #每日一题 力扣第22题 黑白格子画
  19. 广东省职称计算机职称考试试题及答案,职称计算机考试基础知识章节试题及答案一...
  20. lm35温度转换c语言,Arduino基础入门篇29—模拟温度传感器LM35

热门文章

  1. pytorch resnet50_PyTorch终于能用上谷歌云TPU,推理性能提升4倍,我们该如何薅羊毛?...
  2. 【数据分析】reshape(-1,1)和numpy的广播机制
  3. 【python】pycharm启动 一直index,无法运行
  4. java读取gpx文件,从Leaflet导出GPX文件
  5. c#下不同命名空间的引用(一个project使用另外一个project的名称空间)
  6. resin指定java版本_resin的几个常用配置
  7. mysql 动态sql 解析json数据_在SQL 中生成JSON数据
  8. 虚拟机如何上网以及互ping问题
  9. UVA 213 Message Decoding
  10. 软件架构阅读笔记(引)