七PHP框架Laravel学习笔记——资源控制器

Posted 小小白学计算机

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了七PHP框架Laravel学习笔记——资源控制器相关的知识,希望对你有一定的参考价值。

一.资源控制器

  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:

<?php

namespace 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学习笔记——资源控制器的主要内容,如果未能解决你的问题,请参考以下文章

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

四PHP框架Laravel学习笔记——路由命名和分组

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

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

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

php laravel框架学习笔记 基本工作原理