Laravel 框架响应设置和重定向&资源控制器 ③

  • Post author:
  • Post category:其他


请添加图片描述


@作者

:


SYFStrive


请添加图片描述


@博客首页

:



HomePage


📜:


THINK PHP

📌:


个人社区(欢迎大佬们加入)


👉:



社区链接🔗


📌:


觉得文章不错可以点点关注


👉:



专栏连接🔗


请添加图片描述

相关专栏



👉




VUEJS



(🔥)


👉




MYSQL



(🔥)


👉




微信小程序



(🔥)


👉




PHPMYSQL



(🔥)


👉




UNIAPP开发



(🔥)





                    ⡖⠒⠒⠒⠤⢄⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸   ⠀⠀⠀⡼⠀⠀⠀⠀ ⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢶⣲⡴⣗⣲⡦⢤⡏⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⠋⠉⠉⠓⠛⠿⢷⣶⣦⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠇⠀⠀⠀⠀⠀⠀⠘⡇⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡞⠀⠀⠀⠀⠀⠀⠀⢰⠇⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⡴⠊⠉⠳⡄⠀⢀⣀⣀⡀⠀⣸⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀⠰⠆⣿⡞⠉⠀⠀⠉⠲⡏⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠈⢧⡀⣀⡴⠛⡇⠀⠈⠃⠀⠀⡗⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣱⠃⡴⠙⠢⠤⣀⠤⡾⠁⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⢀⡇⣇⡼⠁⠀⠀⠀⠀⢰⠃⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⣸⢠⣉⣀⡴⠙⠀⠀⠀⣼⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⡏⠀⠈⠁⠀⠀⠀⠀⢀⡇⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀⠀⠀⠀⠀⠀⠀⡼⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⣰⠃⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣀⠤⠚⣶⡀⢠⠄⡰⠃⣠⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⢀⣠⠔⣋⣷⣠⡞⠀⠉⠙⠛⠋⢩⡀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀
⠀⡏⢴⠋⠁⠀⣸⠁⠀⠀⠀⠀⠀ ⠀⣹⢦⣶⡛⠳⣄⠀⠀⠀⠀⠀
⠀⠙⣌⠳⣄⠀⡇   不能   ⡏⠀⠀  ⠈⠳⡌⣦⠀⠀⠀⠀
⠀⠀⠈⢳⣈⣻⡇   白嫖 ⢰⣇⣀⡠⠴⢊⡡⠋⠀⠀⠀⠀
⠀⠀⠀⠀⠳⢿⡇⠀⠀⠀⠀⠀⠀⢸⣻⣶⡶⠊⠁⠀⠀
⠀⠀⠀⠀⠀⢠⠟⠙⠓⠒⠒⠒⠒⢾⡛⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⣠⠏⠀⣸⠏⠉⠉⠳⣄⠀⠙⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⡰⠃⠀⡴⠃⠀⠀⠀⠀⠈⢦⡀⠈⠳⡄⠀⠀⠀⠀⠀⠀⠀
⠀⠀⣸⠳⣤⠎⠀⠀⠀⠀⠀⠀⠀⠀⠙⢄⡤⢯⡀⠀⠀⠀⠀⠀⠀
⠀⠐⡇⠸⡅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⡆⢳⠀⠀⠀⠀⠀⠀
⠀⠀⠹⡄⠹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣇⠸⡆⠀⠀⠀⠀⠀
⠀⠀⠀⠹⡄⢳⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⡀⣧⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢹⡤⠳⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣷⠚⣆⠀⠀⠀⠀
⠀⠀⠀⡠⠊⠉⠉⢹⡀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡎⠉⠀⠙⢦⡀⠀
⠀⠀⠾⠤⠤⠶⠒⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠒⠲⠤⠽   


提示:以下是本篇文章正文内容



PHP LARAVEL 简介

  • Laravel是一种流行的开源PHP Web应用程序框架,由Taylor Otwell在2011年创建并发布。它提供了一个简洁优雅的语法和丰富的功能集,旨在使Web开发过程更快速、简单和愉悦。
  1. MVC架构模式:Laravel采用了MVC(Model-View-Controller)架构模,将应用程序的逻辑分为不同的层,提高了代码的可维护性和可测试性。

  2. 简洁的语法和表达力:Laravel框架支持具有简洁而表达力的语法,使得编写清晰、易读、易维护的代码成为可能。

  3. 路由系统:它提供了一个强大且灵活的路由系统,通过简单的配置和代码即可定义Web应用程序的路由规则,实现URL到控制器的映射。

  4. 数据库抽象层:Laravel提供了一个简便的数据库抽象层,支持多种数据库系统,并通过Eloquent ORM提供了一种优雅的方法来与数据库进行交互。

  5. 权限和认证系统:Laravel提供了内置的身份验证和授权功能,使得实现用户身份验证、访问控制和权限管理变得简单和便捷。

  6. 缓存系统:Laravel支持多种缓存后端,包括文件、数据库、Memcached和Redis等,让你可以轻松地实现缓存数据,提升应用程序的性能。

  7. 强大的扩展性:Laravel通过Composer和Packagist等工具提供了丰富的扩展包生态系统,可以快速集成各种功能组件和第三方库,加快开发进程。

  8. 测试支持:Laravel鼓励编写和运行测试,提供了一套丰富的测试工具和断言,帮助开发者确保代码的质量和可靠性。

  • 总的来说,Laravel框架以其易用性、优雅的语法、丰富的功能和强大的扩展性受到了广大开发者的喜爱。它提供了



PHP LARAVEL 框架响应设置 和 重定向



框架响应设置

  1. 路由和控制器处理完业务都会

    返回一个

    发送到浏览器的响应:

    return

  2. 比如字符串会直接输出,而数组则会输出 json 格式,本身是 Response 对象;
return [1, 2, 3]; //输出 json 格式
return response([1, 2, 3]); //同上
return response()->json([1, 2, 3]); //同上
  1. 如果使用 response()输出的话,可以设置状态码和响应头信息;


return response('index', 201); //可以设置 HTTP 请求状态码

  1. 也可以给 HTTP 添加或修改标头,比如将 html 解析模式改成文本 plain 模式;


return response('<b>index</b>')→header('Content-Type', 'text/plain'); //文本解析模式

  1. 结合上面的响应操作,再结合 view()视图功能,显示纯 HTML 代码页面;


return response()→view('task', ['id'=>10], 201)→header('Content-Type', 'text/plain');



重定向

  1. 重定向使用

    助手

    函数 redirect()的 to()方法,注意需要 return 才能跳转;
return redirect()->to('/'); //跳到首页
return redirect()->to('task'); //跳转到 task
return redirect()->to('task/url'); //跳转到 task/url
  1. 也可以直接使用快捷方式直接进行跳转;
return redirect('/'); //跳到首页
return redirect('task'); //跳转到 task
return redirect('task/url'); //跳转到 task/url
  1. redirect()

    助手

    有一个对应的 facade 模式对象;


return Redirect::to('/'); //facade 模式,但需要 use 引入

  1. 使用 redirect() 的 route()方法,可以跳转到指定的命名路由 URI;


return redirect()->route('task.index'); //注意和 route()方法区别

  1. 使用 redirect() 的 back()方法,可以重定向到上一个页面中;
return redirect()->back();
return back(); //快捷方式
  1. 使用 redirect()的 action()方法,可以直接重定向到控制器方法;
return redirect()->action([OneController::class,'url']); //需注册路由
  1. 使用 redirect() 的 away()方法,跳转到外部链接;


return redirect()->away('http://www.baidu.com'); //不带任何编码



PHP LARAVEL 资源控制器



资源控制器

  1. 有一种控制器专门处理 CURD(增删改查),方法很多且方法名基本固定;
  2. 对于这种控制器,我们可以将它设置为资源型控制器,不要大量设置路由;
  3. 这里推荐直接使用命令行生成资源路由,比如 👉

BlogController; 👉

php artisan make:controller BlogController --resource

  1. 生成了的资源控制器会产生

    7 个方法

    ,配置好路由后会自动生成相关内容
Route::resource('blogs', Controllers\BlogController::class);
Route::resources(
	[
	    'blogs' => Controllers\BlogController::class
	]
);

👇

在这里插入图片描述

  1. 如果我们注册了资源路由,那么如上图的资源路由 URI 和名称均自动创建生效;
http://localhost:8000/blogs/10/edit //可以访问到 edit 方法
return route('blogs.store'); //可以通过助手 route()了解是否注册
  1. 还有一条命令可以直接查看目前可用的路由以及命名;


php artisan route:list

  1. 我们也可以

    限制资源路由

    只开放部分方法或排除部分方法,可以用命令查看;
//只有 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');



最后


以上是个人学习 THINKPHP 的相关知识点,一点一滴的记录了下来,有问题请评论区指正,共同进步,这才是我写文章的原因之,如果这篇文章对您有帮助请三连支持一波



版权声明:本文为m0_61490399原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。