1.基本路由 - http://laravelacademy.org/post/398.html
get()
post()
put()
patch()
delete()
options()
match() - ['get', 'post']
any() - 任意http方法
路由参数 - 普通参数 {name}
路由参数 - 可选约束 {name?}
路由参数 - 正则约束 - {name} + 链式where(name)
路由参数 - 正则约束 - 全局约束(所有路由都会进行正则约束) - RouteServiceProvider->boot()里添加 $router->pattern('name', '\w{6}')
2.路由命名和路由分组 - http://laravelacademy.org/post/417.html
1>路由+路由命名 - as
2>路由分组+路由命名 - 'as' => 'admin::' + 'as' => 'dashboard' ---> route('admin::dashboard')
3>路由分组:
middleware - 中间件
namespace - 命名空间
domain - 子域名
prefix - 路由前缀
3.CSRF攻击 - http://laravelacademy.org/post/525.html
表单 - 普通token
ajax - X-CSRF-Token
cookie - X-XSRF-Token
从CSRF保护中排除指定URL - VerifyCsrfToken->except 中间件
4.路由模型绑定
Laravel 会自动解析定义在路由或控制器动作(变量名匹配路由片段)中的 Eloquent 模型类型声明
Route::get('api/users/{user}', function (App\User $user) { // $user - 数据库查询到的用户信息(Eloquent模型类的实例化)
return $user->email;
});
5.表单方法伪造
表单不支持put、patch、delete方法,添加隐藏字段 _method
6.中间件 - http://laravelacademy.org/post/2803.html
理解中间件的最好方式就是将中间件看做 HTTP 请求到达目标动作之前必须经过的“层”,每一层都会检查请求并且可以完全拒绝它。
目录:
app/Http/Middleware
定义中间件:
php artisan make:middleware OldMiddleware
中间件前:
1>如果我们想在请求处理前执行业务逻辑,则在$next闭包执行前执行业务逻辑操作:
class BeforeMiddleware
{
public function handle($request, Closure $next)
{
// 执行业务逻辑操作 // 1.先执行我们自定义逻辑
return $next($request); // 2.后执行$next()
}
}
中间件后:
1>如果想要在请求处理后执行中间件业务逻辑,则在$next闭包执行后执行操作:
class AfterMiddleware
{
public function handle($request, Closure $next)
{
$response = $next($request); // 1.先$next()
// 执行动作 // 2.执行我们自定义逻辑
return $response; // 3.返回$next()之前的结果
}
}
我们处理的大部分操作都是第一种场景,即在请求处理前执行操作,比如用户认证、CSRF验证、维护模式等都是这样,但也有用到第二种场景的时候,比如StartSession中间件,该中间件在请求处理前后都有操作
注册中间件 - app/Http/Kernel.php:
全局中间件:
想要中间件在每一个HTTP请求期间被执行,设置 $middleware(1) 数组即可
分配中间件到路由:
protected $routeMiddleware(2) = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
];
添加到该数组的元素,就可在路由选项数组中,调用
Route::get('admin/profile', ['middleware' => 'auth', function () {
//
}]);
使用数组分配多个中间件到路由:
Route::get('/', ['middleware' => ['first', 'second'], function () {
//
}]);
除了使用数组外,还可以使用 middleware 方法链的方式定义路由:
Route::get('/', function () {
//
})->middleware(['first', 'second']);
中间件组:
protected $middlewareGroups(3) = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
],
'api' => [
'throttle:60,1',
'auth:api',
],
];
中间件组可以被分配给路由和控制器动作,使用和单个中间件分配同样的语法。再次申明,中间件组的目的只是让一次分配给路由多个中间件的实现更加简单:
Route::group(['middleware' => ['web']], function () {
//
});
中间件参数:
class RoleMiddleware
{
public function handle($request, Closure $next, $role) - 该中间件,需要一个$role参数
{
if (! $request->user()->hasRole($role)) {
// Redirect...
}
return $next($request);
}
}
中间件参数可以在定义路由时通过:分隔中间件名和参数名来指定,多个中间件参数可以通过逗号分隔:
Route::put('post/{id}', ['middleware' => 'role:editor', function ($id) { // role-中间件 & editor-参数值
//
}]);
可终止的中间件:
中间件可能需要在 HTTP 响应发送到浏览器之后做一些工作!例如:Laravel 内置的“session”中间件会在响应发送到浏览器之后将 Session 数据写到存储器中,为了实现这个,定义一个可终止的中间件并添加 terminate 方法到这个中间件:
class StartSession
{
public function handle($request, Closure $next)
{
return $next($request);
}
public function terminate($request, $response) // 终止中间件,需要添加 'terminate()',看到没,可以接收 $response 参数了 --- 表示请求已经发送到了浏览器,浏览器的响应结果!
{
// 存储session数据...
}
}
这个东西,得解释下,看了好几遍才理解了意思:
1.中间件的定义是:HTTP请求到达目标页面,添加的一些约束层。所以,中间件都具有 $request,而不可能出现 $response 响应
2.终止中间件,添加了 terminate() 方法,它就可以接收 $response 响应了。它是在请求已到达了目标后的响应结果
3.一旦你定义了一个可终止的中间件,应该将其加入到 HTTP kernel 的全局中间件列表中 ------- 就是kernel.php中的$middleware数组
4.当调用中间件上的 terminate 方法时,Laravel 将会从服务容器中取出该 '中间件的新的实例'(新实例化的中间件对象)。并不是之前的 '中间件实例化对象'
如果你想要在调用 handle 和 terminate 方法时使用同一个中间件实例,则需要使用容器的 singleton 方法将该中间件注册到容器中。
因为http请求执行过程,肯定是:先执行了 handle(),然后等请求完毕后,再执行 $terminate(),会实例化同一个中间件的2个不同的对象。如果想保持同一个对象,就得采用 '单例模式' - 即文档中说的 'singleton()'
7.控制器 - http://laravelacademy.org/post/2816.html &
1>简介:
将所有的请求处理逻辑都放在 route.php 中是不合理的! ------- route.php是定义路由的,这个我们都清楚!记得路由中是支持 function(){} 匿名函数的,这里面就是匹配的路由,对应的请求逻辑!(所以,route.php 也是可以进行逻辑代码的)
需要使用controller来管理逻辑,放在 'app/Http/Controllers/' 下,在route.php中,通过 controller@action 来定位哪个逻辑
2>基本控制器:
class UserController extends Controller
{
public function showProfile($id)
{
return view('user.profile', ['user' => User::findOrFail($id)]);
}
}
Route::get('user/{id}', 'UserController@showProfile'); // 请求控制器
3>控制器&命名空间
1.定义控制器路由时,并未指定完整的 '控制器命名空间',只定义了 'App\Http\Controllers' 之后的 'UserController'。默认情况下: RouteServiceProvider,中定义了一个 $namespace = 'App\Http\Controllers',我们相对它既可!
2.如果控制器目录下,使用了多层目录,例如 'App\Http\Controllers\Photos\AdminController',路由调用:
Route::get('foo', 'Photos\AdminController@method');
4>控制器路由,也可以命名(别名)
Route::get('foo', ['uses' => 'FooController@method', 'as' => 'name']); // 使用as命名一个简单的名字,重定向&跳转更简单
$url = route('name'); // 生成url更加简单
5>控制器中间件:
1)传统的方式,同匿名函数路由一样
Route::get('profile', [
'middleware' => 'auth', // 定义中间件,传统的方式
'uses' => 'UserController@showProfile'
]);
2)将中间件放在 '控制器构造函数' 中,更加方便、灵活。构造函数中使用 middleware() 方法:
class UserController extends Controller
{
public function __construct()
{
$this->middleware('auth'); // 一般的中间件
$this->middleware('log', ['only' => ['fooAction', 'barAction']]); // 中间件只能作用于控制器的这些方法
$this->middleware('subscribed', ['except' => ['fooAction', 'barAction']]); // 中间件作用于除了这些方法的其它方法
}
}
6>RESTful资源控制器 - 可了解RESTful,就是所有url都真对的是一个资源处理(百度、google,我也忘记了...)
1)生成
php artisan make:controller PhotoController // 一般的控制器的创建
php artisan make:controller PhotoController --resource // RESTful风格的controller的创建
默认会添加一系列的方法:
index, create, store, show, edit, update, destroy
我们可真对这个RESTful资源的一些列方法,进行路由:
Route::resource('photo', 'PhotoController'); // 使用resource()方法,而非之前的get(),一个一个来设置(因为它们的标准是同一的)
2)只定义部分资源路由
Route::resource('photo', 'PhotoController', ['only' => ['index', 'show']]); // 指定哪些可用
Route::resource('photo', 'PhotoController', ['except' => ['create', 'store', 'update', 'destroy']]); // 排除哪些可用
3)重命名资源路由
Route::resource('photo', 'PhotoController', ['names' => ['create' => 'photo.build']]); // 将create重命名为build
4)觉得默认的RESTful方法,不够用,我们可以给controller添加更多的方法:
Route::get('photos/popular', 'PhotoController@method'); // 如果有必要在默认资源路由之外添加额外的路由到资源控制器,应该在调用 Route::resource 之前定义这些路由
Route::resource('photos', 'PhotoController');
7>依赖注入&控制器
Laravel 使用服务容器解析所有的 Laravel 控制器,因此,可以在控制器的构造函数中类型声明任何依赖,这些依赖会被自动解析并注入到控制器实例中
1)构造函数注入:
use App\Repositories\UserRepository; // 引入依赖类
class UserController extends Controller
{
protected $users;
public function __construct(UserRepository $users) // 将依赖注入到构造方法
{
$this->users = $users;
}
}
2)除了构造函数注入之外,还可以在控制器的动作方法中进行依赖的类型提示
use Illuminate\Http\Request; // 引入依赖类
class UserController extends Controller
{
public function store(Request $request) // 将依赖注入到普通的方法
{
$name = $request->input('name');
//
}
}
3)方法中,需要传递其它参数,参数在其它依赖之后:
Route::put('user/{id}', 'UserController@update'); // 需要一个参数
use Illuminate\Http\Request; // 引入依赖类
class UserController extends Controller
{
public function store(Request $request, $id) // 将依赖注入到普通的方法,$id参数在$request参数之后
{
$name = $request->input('name');
//
}
}
8>路由缓存:
1)注意:
路由缓存不会作用于基于闭包的路由。要使用路由缓存,必须将闭包路由转化为控制器路由。
2)命令:
php artisan route:cache // 生成缓存
php artisan route:clear // 清除缓存
一旦,生成缓存,app/Http/routes.php将不在有效,使用缓存!一旦修改了routes.php,应该重新生成缓存相关推荐
从SPI到JTAG:玩转FT2232H的MPSSE多协议切换指南(附配置代码)
本文详细介绍了如何利用FT2232H芯片的MPSSE技术实现SPI与JTAG协议的无缝切换,提供配置代码和调试技巧。通过解析MPSSE引擎架构和硬件特性,帮助开发者灵活应对多种串行协议需求,提升嵌入式开发效率。特别适合FPGA调试和物联网设备开发场景。
Laravel目录结构
一个新项目的模板结构如上图 1. app 目录包含了应用的核心代码,咱们的主要业务逻辑都是写在这里,其中最重要的是http目录,MVC架构中的控制器书写在Controllers下面; 2.bootstrap 目录包含了少许文件用于框架的启动和自动载入配置,还有一个 cache 文件夹用于包含框架生成的启动文件以提高性能; 3.config 目录包含了应用所有的配置文件,比如缓存,数据库…; 4
从科研小白到动物行为分析:我的DeepLabCut 3.0安装与初体验全记录
本文记录了从科研小白到成功安装并使用DeepLabCut 3.0进行动物行为分析的全过程。详细介绍了Anaconda环境配置、CUDA版本选择、DeepLabCut安装步骤及验证方法,并分享了初体验中的实用技巧和跨学科研究心得,为生物研究者提供了AI工具应用的实战指南。
Laravel 程序架构设计思路:使用动作类
当我们谈论到应用程序的架构的时候,经常会问到一个经典的问题,那就是“这段代码应该放在哪里比较好”。 因为 Laravel 是一个相当灵活的框架,所以要回答这个问题其实没那么容易。我应该把我的业务逻辑写在 Model 层,还是 Controller 层,或者是其他地方? 当你的应用程序仅有一个接入点,把业务逻辑写在 Controller 层是可以的。但是现在更普遍的的情形是,有很多接入点去调用相同...
[官方培训]19-物理模拟 Epic 肖月 笔记
物理引擎全局解算精度的设置,帧率越高,子步越多得到的模拟结果就越精确。引擎默认情况下是以变化的帧率运行的,但是对于Chaos物理引擎来说。一般子步越小,帧率越固定,效果就会更好更稳定一些。图示的分步选项就是依据下方的最长子步时长和最大步数对动态变化的帧率,进一步的做拆分来保证物理效果。对于影视项目建议都开启分步选项。红色框内有三个迭代次数的设置,这是Chaos基于位置的约束求解算法专用的一个设置,可以简单理解为迭代次数越高,当前帧一个子步内得到的结果就越精确。
Python爬虫实战:全网政府招标信息采集与整合
本文详细介绍了如何使用Python构建一个完整的政府招标信息爬虫系统,涵盖了从数据采集、解析、存储到质量监控的全流程。多源采集:支持多个地方政府网站的同时采集智能解析:自动适应不同网站结构,智能提取关键信息异步高效:使用异步编程提高采集效率反爬应对:内置多种反爬虫应对策略数据质量:完善的数据清洗和质量监控机制易于扩展:模块化设计,便于添加新的数据源。
laravel路由配置
laravel路由配置
【人工智能】拒绝焦虑,理性突围:AI 时代 Java 工程师的职业重构与进化指南
摘要:在AI技术快速发展的背景下,Java工程师面临职业转型挑战。本文通过MECE原则解构工作内容,划分高替代风险区(如CRUD开发)、高增效潜能区(如逻辑优化)和高核心壁垒区(如架构设计),指出AI对不同任务的影响程度。从劳动经济学视角分析行业将呈现K型分化,初级执行者被替代,而精通AI协作的全栈工程师需求增长。文章强调警惕过度依赖AI导致认知能力退化,并提出转型路径:掌握AI驱动开发(AIDD)、深耕领域驱动设计(DDD)、拓展全流程能力及AI原生应用开发。最终结论指出,未来的核心竞争力在于结合AI工具
laravel 中间件排除
public function __construct(){ //除了主页之外 $this->middleware('auth', ['except' => ['index','show']]); //只有发布页 //$this->middleware('auth', ['only' => '...
Vue3 - 手机移动端H5网页强力解决弹起软键盘后页面被挤压变形或页面整体上移问题,点击input输入框键盘弹出底部被上推往上顶遮挡及各种问题(兼容安卓苹果ios手机,微信公众号网页微信内置浏览器)
vue3,h5网页,input输入框组件,vue3 h5软键盘弹出,vue3输入框,键盘弹起时页面整体上移问题,uni,H5页面,解决软键盘弹起页面被挤压、被往顶的问题,解决vue3输入框,键盘弹起时页面整体上移问题,vue3调用手机系统软键盘,页面窗口被顶起,布局定位失效,解决VUE3软键盘弹起导致页面fixed定位元素被顶上去,输入法软键盘弹起,窗口顶起,变形解决办法,Vue中input组件在IOS设备上弹出软键盘时页面整体上移问题的解决方案,以及input组件聚焦后弹出软键盘固定在,Vue3软键盘把界
Coffin-Manson模型的详细讲解
Coffin-Manson模型是一个简单而强大的工具,用于预测低循环疲劳寿命,尤其在半导体功率循环中评估热机械可靠性。其核心是通过应变(或温度变化)与循环次数的对数关系,实现加速测试和寿命外推。尽管有局限性,通过改进版本(如加入激活能),它在电子封装、焊点疲劳和器件设计中仍广泛应用。实际使用时,建议结合实验数据拟合参数,并验证模型预测。如果需要特定材料的参数值、代码实现或进一步计算示例,请提供更多细节!
Laravel 框架安装&路由和控制器 ①
Laravel是一种流行的开源PHP Web应用程序框架,由Taylor Otwell在2011年创建并发布。它提供了一个简洁优雅的语法和丰富的功能集,旨在使Web开发过程更快速、简单和愉悦。MVC架构模式:Laravel采用了MVC(Model-View-Controller)架构模,将应用程序的逻辑分为不同的层,提高了代码的可维护性和可测试性。简洁的语法和表达力:Laravel框架支持具有简洁而表达力的语法,使得编写清晰、易读、易维护的代码成为可能。
Statistics and Machine Learning Toolbox
Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具
PHP laravel框架 路由与控制器的使用
本文旨在帮助用户了解laravel 框架下路由与控制器基础知识
温度PID控制PLC程序
温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值
怀旧版电脑GBC模拟器
再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。
【Laravel系列3.4】中间件在路由与控制器中的应用
中间件在路由与控制器中的应用中间件是什么?在传统框架的年代,很少会有中间件这个概念。我最早接触这个概念其实是在学习 MySQL 的时候,了解过 MyCat 这类的组件也被称为中间件。既然是...
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
理解Laravel的路由与控制器
打开文件,添加一个方法来返回在这篇文章中,我们介绍了如何安装和配置Laravel,并构建了一个简单的Hello World应用程序。我们还探讨了Laravel的目录结构、路由、控制器和视图。在接下来的文章中,我们将深入探讨Laravel的其他核心功能,如路由系统、Eloquent ORM和中间件等。希望这篇文章能帮助你顺利入门Laravel,欢迎继续关注后续的教学文章!
PHP框架Laravel中如何处理路由和中间件
Laravel是一个流行的PHP框架,它提供了许多有用的功能和工具,帮助开发者更高效地构建Web应用程序。在Laravel中,路由和中间件是两个非常重要的概念,它们对于控制应用程序的流程和安全性至关重要。除了上述基本路由类型外,Laravel还提供了其他高级路由功能,如路由参数、路由组、路由中间件等,它们可以帮助你更灵活地处理路由。一旦你定义了中间件类,你需要在中间件服务提供者中注册它,并在路由中使用它。文件夹中的路由文件来配置。Laravel提供了几种不同类型的路由,包括基本路由、资源路由、命名路由等。
laravel路由
路由 在laravel中,定义路由的地方在routes/web.php文件中。在使用laravel前必须先定义路由,然后才能在浏览器中访问。routes文件夹中还有一个api.php,用于定义api路径。 最简单的路由: Route::get('/',function(){ return 'hello,world!' ; }); 此时在浏览器中,输入localhost,就可以看到输出的字符...
laravel-acl中间件使用教程:保护路由和控制器的安全实践
laravel-acl是一个轻量级的基于角色的权限系统,专为Laravel 6+构建,集成在Auth系统中。它提供了强大的中间件功能,可以有效保护路由和控制器方法,确保应用程序的安全性。 ## 中间件简介:什么是HasPermission? laravel-acl的核心中间件是`HasPermission`,位于`src/Kodeine/Acl/Middleware/HasPermission
(Laravel笔记之路由) Laravel 是如何实现路由功能以及路由的拆分
Laravel 是如何实现用路由去调用控制器方法以及闭包方法 这篇文章写得比较详细。有兴趣的朋友可以点击 这个链接 深入浅出 Laravel 路由执行原理 查看。 话不多说直接上Laravel底层代码: 路径:vendor\laravel\framework\src\Illuminate\Routing\Route.php <?php /** * Create a new ...
Laravel学习记录--路由器,控制器
laraval框架之路由器 一,路由:将用户的请求转发给相应的程序处理,建立url和程序之间的映射 a.基础路由 Route:get('user/show',function(){ return 'user_show'; }) b.多请求路由:一条路由实现多个请求 Route::match(['get','post'],'user/register',function(...
Laravel 5如何在中间件中获取路由参数?
以官方文档中间件篇的年龄为例子进行了修改 路由部分 Route::get('test/age/{age}',[ 'middleware' => 'old', 'uses'=>'Test@test' ]); 如果你要指派中间件给特定路由,你得先在 app/Http/Kernel.php 给中间件设置一个好记的 键,默认情况下,这个文件内的 $routeMiddleware
laravel 控制器 中间件 传递数据_Laravel5 自定义路由中间件的使用步骤,太好用,珍藏了!...
前言Laravel5中我们处理request请求,中间会有很多环节。本文所说的中间件,位于路由和控制器之间,起到过滤和筛选请求的作用。为什么不放到“表单验证”里呢?因为有些请求,我们可能不太理会表单内容,或者想要在表单数据注入控制器方法之前,就进行拦截,那么,中间件无疑是一个好的选择。创建中间件下面示例,创建一个中间件,用于判断用户是否进行了“实名认证”。如果验证过,则通过;未验证,则返回提示信息...
如何在Laravel中定义路由和中间件?
本报告将系统性地梳理如何在现代 Laravel 版本(以 Laravel 10 为例)中高效、正确地定义和使用路由与中间件,并探讨相关的最佳实践,以帮助开发者构建出更安全、更健壮、性能更优的应用程序。路由模型绑定是 Laravel 的一个强大特性,它可以自动将路由 URI 中的 ID 或其他唯一标识符注入为对应的 Eloquent 模型实例,极大地简化了控制器逻辑。Facade 来完成。掌握了基础路由定义后,我们可以进一步探索 Laravel 提供的更高级、更强大的路由功能,这些功能是构建复杂应用的关键。
laravel中间件简单实用
Laravel 中间件是什么? 简而言之,中间件在 laravel 中的作用就是过滤 HTTP 请求,根据不同的请求来执行不同的逻辑操作。 我们可以通过中间件实现以下功能: 指定某些路由 设置 HTTP 响应头 记录请求 过滤请求的参数 决定是否启用站点维护模式 响应前后做一些必要的操作 自定义中间件 命令行执行下面的简单命令,就可以轻松创建一个新的中间件 php artisan make:middleware <MiddlewareName> //MiddlewareName 就是你要创建
laravel笔记-控制器
laravel笔记-控制器写在前面时间可贵,善用目录↑学习Laravel的笔记,仅仅是作为laravel文档笔记,目的是强化对文档的理解,质量不高。什么是控制器(Controller) 将相关的 HTTP 请求封装到一个类中进行处理。通常控制器存放在 app/Http/Controllers 目录中。 继承App\Http\Controllers\Controller控制器嘛,起一个控制调度的作
Laravel摘记之路由、控制器、视图
Laravel路由 什么是路由 将用户的请求按照事先规划的方案提交给指定的控制器和方法来进行处理。 Laravel框架中用户需要访问的全部路由都事先设置好,用户只能访问声明的一些路由,即没有声明的路由是不能被访问的,进而可以提高网站的安全和网站URL访问的友好度。 1、路由配置文件 路由文件的位置:项目目录/routes/web.php文件 2、配置路由 ①、路由...
254



被折叠的 条评论
为什么被折叠?



