首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Laravel 控制器:从 MVC 模式聊起

1、控制器概述 到目前为止,我们定义的所有路由都是基于闭包函数实现的,前面已经提到过,随着应用体量的增长,不可能将所有路由都定义在单个文件中,且对于复杂的业务逻辑,闭包函数也不足以支撑,所以和其他 Web...提到依赖注入,就绕不开服务容器,关于服务容器后面我们会单独讲解,而现在你只需了解服务容器是一个绑定多个接口与具体服务实现类的容器,而依赖注入则是在代码编写时以接口(或者叫做类型提示)方式作为参数,不必传入具体实现类...在 Laravel 中所有的控制器方法(包括构造函数)都会在服务容器中进行解析,这意味着所有方法中传入的可以被容器解析的接口/类型提示对应服务实现都会被自动注入,我们这个过程称之为依赖注入。...5、资源控制器 有时候在编写控制器时命名方法名称可能是最困难的,好在 Laravel 为常见的 REST/CRUD 控制器(在 Laravel 中称之为「资源控制器」)提供了一套约定规则,并为此提供了相应的...绑定资源服务器 通过上面的表格已经了解了 Laravel 中对资源路由的命名约定,Laravel 还为我们提供了一个 Route::resource 方法用于一次注册包含上面列出的所有路由,并且遵循上述所有约定

11.2K51
您找到你想要的搜索结果了吗?
是的
没有找到

路由使用进阶(二)

1、路由模型绑定 我们在使用路由的时候一个很常见的使用场景就是根据资源 ID 查询资源信息: Route::get('task/{id}', function ($id) { $task = \...隐式绑定 使用路由模型绑定最简单的方式就是路由参数命名为可以唯一标识对应资源模型的字符串(比如 task 而非 id),然后在闭包函数或控制器方法中对该参数进行类型提示,此处参数名需要和路由中的参数名保持一致...{task},然后默认以参数值作为资源 ID 在底层通过 Eloquent 查询获取对应模型实例,并将结果传递闭包函数或控制器方法中。...所谓频率限制,指的是在指定时间单个用户对某个路由的访问次数限制,该功能有两个使用场景,一个是在某些需要验证/认证的页面限制用户失败尝试次数,提高系统的安全性,另一个是避免非正常用户(比如爬虫)对路由的过度频繁访问...4、路由缓存 使用路由缓存之前,需要知晓路由缓存只能用于控制器路由,不能用于闭包路由,如果路由定义中包含闭包路由无法进行路由缓存,只有所有路由定义转化为控制器路由资源路由后才能执行路由缓存命令:

8.5K40

3分钟短文:可能是Laravel模板最直白的用法了,没有之一

引言 上一期我们通过分配路由地址,在url中接收位置参数并传递给控制器方法, 并且在控制器内简单地打印输出接收的参数。...本期我们尝试着使用laravel的模板功能,把控制器内组装好的数据渲染视图模板文件, 并做展示。...说明从路由控制器处理,视图渲染,都已经正常地工作了。 laravel为什么说是最优雅的框架呢?...传递多个变量 上一节只在视图渲染的时候,传递了一个变量值,而实际业务中,我们不可能把所有的数据,都写入同一个变量内, 然后在模板使用单个组装的变量。...写在最后 本文通过多种方法对从控制器内接收和组装的数据通过视图方法 view 函数 渲染模板文件并展示,为了演示功能,我们使用的都是单个变量没有复杂结构的数据。

1.9K20

Laravel系列3.2】路由:指哪儿打哪儿

路由:指哪儿打哪儿 在没有接触到 Laravel 之前,早先的框架基本上都没有这个完整的路由的概念。像是 TP3 、Yii1 版本的时候,都是通过入口文件对参数的解析来加载指定的 控制器 。...Restful 风格的 URL 多个 URI 指向同一个控制器(可以在路由中区分参数) URI 和 控制器 解耦,自由定义名称,不受控制器里面方法名的限制 很多场景都不需要控制器,比如一个静态页面,直接路由里就可以搞定了...name 参数后面的冒号表明这个参数是一个可选的参数,而 where 中则指定了参数的规则,比如 id 必须是数字,而 name 必须是小写的 a z 。...edit http://laravel8/temp/delete http://laravel8/temp/insert 就可以把这五个链接都放到 temp 这个资源路径下,一般这种类似的资源也会只使用一个控制器...当然,如果一个控制器是一个 RESTful 资源文件的话,直接使用 Route::resource() 去指向一个控制器就可以了,可以省略掉方法名,这种方式在文档中叫做 资源控制器

11.7K10

Laravel框架关键技术解析

); 路由参数:Route::get(‘资源标识/{参数名[?]...[/{参数名}……]} ‘,闭包函数或控制器响应函数标识)[->where(‘参数名’,'正则’)]; 路由命名:Route::get('资源标识’,[‘as’=>’命名’,uses=>闭包函数或控制器响应函数标识...基础控制器路由:Route::请求方法(‘资源标识/{参数名[?]...[/{参数名}……]’,’控制器类名@函数名称’);参数与顺序有关,与命名无关 隐式控制器路由:Route::controller(‘路由前缀’,’控制器类名’[,命名路由]);请求结构为”主机地址/路由前缀...,请求时为home-index RESTFul资源控制器路由:Route::resource('资源标识’,’控制器类名’); 3.视图 两种方式生成视图:直接返回字符串,使用view()方法返回视图响应

11.9K20

具有嵌套关系的可重用API资源——Laravel5.5

本文内容主要围绕在 Laravel 5.5 中使用 API 开发的重要步骤,着重介绍如何利用 Laravel 的 API 资源(Resource)和控制器(Controller)进行多因素身份验证(MFA...、更新、删除)操作的资源路由。...这些步骤旨在建立一个基本的 Laravel 5.5 项目,并做了一些初始化设置,包括创建模型、资源类和控制器,并配置使用 SQLite 作为数据库。 2....在控制器使用API资源<?...这样做有利于避免 N+1 查询问题(在获取关联数据时出现的效率问题),同时可以使用单个资源类处理不同的情况。如果关联数据不可用,资源类会忽略它;反之,如果可用,资源类会将其包含在返回的数据中。

10610

Laravel系统3.3】控制器与表单验证

之前在讲路由的时候也说过这个问题,但是在 Laravel 中,实现了路由控制器的解耦,所以我们的控制器是可以随意定义并且命名的,直接通过路由来进行绑定。...action controller 参数接收 对于请求参数的接收来说,在控制器中和在路由的回调函数中接收参数没有什么区别。...资源控制器 在上篇路由的文章中就讲过,我们可以定制一个资源型的路由,对应的就是一个资源型的控制器,这俩货是相辅相成的。那么什么是资源型呢?其实就是标准的 RESTful 类型的一套请求链接。...,就可以在路由上非常方便地配置这个资源路由,一行就搞定。...控制器的调用 对于路由控制器的调用,还记得上篇文章中学习过的 laravel/framework/src/Illuminate/Routing/Route.php 这个文件中的 run() 方法吗?

8.6K20

laravel框架中路由设置,路由参数路由命名实例分析

本文实例讲述了laravel框架中路由设置,路由参数路由命名。分享给大家供大家参考,具体如下: laravel中必须先配置路由,才能使用。...不像tp中不配置也能使用,因为tp可以通过pathinfo进行自动解析。 一、简单的路由设置 我们一般在routes/web.php文件中配置网页端路由。...function () {}); 也可以通过Route::match()处理指定的请求方式 Route::match(['get', 'post'], '/', function () {}); 三、路由映射到控制器方法..., function (Request $req) { //获取单个路由参数 var_dump($req::route('key')); //获取所有路由参数 var_dump($req...我们可以给路由设置一个名字,方便在视图中使用 Route::get('/list/{page?}'

1.4K21

Laravel学习笔记(二)—— 路由,请求接收与转发

前言 对于新手而言,你可能只需要会使用Laravel就行了,这也是我第一章没写Laravel生命周期的原因。...源码 多请求路由 match 和 any match用于匹配多个method,any用于匹配所有类型的请求。...用于传递参数,比如www.test.com/artice/1,获取ID为1的文章 Laravel路由中,用一对{}来表示路由参数参数名称写入括号内。...然后可以通过$参数名的形式调用 Route::get('/{name}', function ($name) { return $name; });#参数返回 路由别名 为以后调用路由规则做准备...路由参数 2. 返回视图 3. 转到控制器 路由参数已经写过了,这里重点写一下转到控制器,开发中一般都是转到控制器,让控制器进行处理后返回视图和数据再输出至浏览器。

3K01

PHP-Laravel控制器使用(C)

后续如果需要更多的控制器只需要重复的执行上述的artisan命令即可。 注意:控制器可以分目录管理。 4、控制器路由(项目以该方式为主) 即,如何使用路由规则调用控制器下的方法,而不再走回调函数。...路由设置格式基本相同,只是匿名函数换成‘控制器类名@方法名’定义格式如下: Route::请求方法(‘路由表达式’,’控制器@方法'); 例如:在Test控制器中创建test1方法,其中输出phpinfo...Input::get(‘参数的名字’, ‘如果参数没有被传递使用该默认值’) //类似php里三元运算符 Input::all(): 获取所有的用户的输入 Input::get('参数的名字'):...获取单个的用户的输入 Input::only([ ‘id’,’age’]): 获取指定几个用户的输入 Input::except([ ‘id’,’age’]): 获取指定几个用户的输入以外的所有的参数...在laravel中如果需要使用facades的话,但是又不想写那么长的引入操作: Use Illuminate\Support\Facades\Input 则可以在config/app.php中定义长串的别名

1.4K10

Laravel框架下载,安装及路由操作图文详解

目录五:public 前端控制器资源相关文件(图片、JavaScript、CSS) ? 目录六:resources 应用资源 ?...里面还有些具体的文件介绍请附录:laravel目录结构介绍 这里我就不做多介绍了 NO.3 Laravel路由 路由使用 首先,我们要先打开Laravel目录的app目录,再点击APP目录里的http...路由参数使用方法 1.必选参数 Route::get('user/{id}',function($id){ return 'User-id-'.$id; }); 效果如下图: ?...好了,这里,我们的路由已经讲完了 附录:laravel目录结构介绍 文件夹名称 简介 app 应用程序的业务逻辑代码存放文件夹 app/Console 存放自定义 Artisan 命令文件 app...存放 NPM 依赖模块 package.json 应用所需的 NPM 包配置文件 phpunit.xml 测试工具 PHPUnit 的配置文件 public 前端控制器资源相关文件(图片、JavaScript

4.5K51

3分钟短文:Laravel控制器用法光速入门

引言 上一章我们介绍了laravel路由注册中的“花拳绣腿”,样样都是那么优雅而实用。路由传递过来的参数,在经过中间件验证和导向之后,应该去控制器接受处理了。...本文用最简单的示例,让你明白laravel控制器是干什么的,以及怎么用。...laravel贴心地把输入数据集成 Request 类内了。...,其实都包含在了laravel提供的资源路由之内,我们创建一个资源路由相关的控制器,并初始化框架代码,可以使用命令实现: php artisan make:controller TaskController...要查看系统内所有已注册的路由,可以使用下面的指令: php artisan route:list 写在最后 本文浅显地介绍了laravel控制器使用,最重要的是,resource路由方法默认的骨架代码

1.5K10

3分钟短文:Laravel控制器用法光速入门

引言 上一章我们介绍了laravel路由注册中的“花拳绣腿”,样样都是那么优雅而实用。路由传递过来的参数,在经过中间件验证和导向之后,应该去控制器接受处理了。...本文用最简单的示例,让你明白laravel控制器是干什么的,以及怎么用。...laravel贴心地把输入数据集成 Request 类内了。...,其实都包含在了laravel提供的资源路由之内,我们创建一个资源路由相关的控制器,并初始化框架代码,可以使用命令实现: php artisan make:controller TaskController...要查看系统内所有已注册的路由,可以使用下面的指令: php artisan route:list 写在最后 本文浅显地介绍了laravel控制器使用,最重要的是,resource路由方法默认的骨架代码

1.7K11

laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析

本文实例讲述了laravel框架路由分组,中间件,命名空间,子域名,路由前缀。...分享给大家供大家参考,具体如下: laravel路由分组,就是把一些具有相同特征的路由进行分组,比如一些路由需要进行验证,一些路由有共同的前缀,一些路由有相同的控制器命名空间等。...一、中间件 为一组路由设置相同的中间件,可设置多个中间件,执行顺序依数组中的顺序来运行。...{}); //使用auth中间件 Route::get('user/info', function () {}); }); 二、路由前缀 有些路由有共同的前缀,我们可以为这些路由设置一个共同的前缀...Route::get('products/{id}', function ($shop, $id) { }); }); 五、命名空间 当我们绑定路由控制器方法时,如果没有显示指定控制器的命名空间

2.1K31

Laravel框架路由与MVC实例详解

必选参数:当以带参数的形式发送请求时,可以在路由中进行接收,用大括号参数括起,用/分割,例如: Route::get('req4/{name}/{age}', function ($name, $age..."; }); 以get请求时参数传递,结果如下: ? 可选参数:以上的参数是必须的,如果缺少某一个参数就会报错,如果希望某个参数是可选的,可以为它加一个?..."; })- where(['name'= '[A-Za-z]+','age'= '[0-9]+']); 1.4、路由群组 有时我们的路由可能有多个层级,例如定义一级路由home,其下有二级路由article...例如路由home/comment命名为comment,在生成url与重定向时就可以使用路由的名字comment: Route::get('home/comment',['as'= 'comment',.../laravel52/public/home/comment 2、控制器 route路由只对请求进行分配跳转,具体的业务逻辑则需要由控制器来处理,控制器一般封装成为一个php类。

2.7K50

Laravel 开发 RESTful API 的一些心得

大方面,会涉及给别人用的使用OAuth,自己使用的用token就足够了 设计最初,最好在路由加个版本号,方便以后扩展 Route::prefix('v1')->group(function () {...laravel用的是中划线(-),因为谷歌收录时,按中划线划分关键字,国内的是按下划线(_)收录,具体看自己了,我是喜欢下划线 >_< 更多看这里: 路由命名规范 表单验证 可以使用控制器自带的表单验证...,更推荐使用 表单类,能分离都分离出去,控制器不要处理太多事情。...接口代码 能分离的代码都不要吝啬~~~ 数据转换 Laravel自带的API Resource 用起来真的很方便,不过发现一个问题,--collection的格式总是转不过来,后来直接放弃了 单个使用...,如果关联没有被加载,则 posts 键将会在资源响应被发送给客户端之前被删除。

24910

30分钟用Laravel实现一个博客

第三阶段_2:资源路由、在资源控制器中完成对博客的增删改查。 我们写的程序,除了前台好看的界面,就是后台的程序,而后台的程序无非就是“增删改查”以及“花式增删改查”罢了。...-resouce生成的控制器资源控制器即自带 CURD增删改查 所有方法的控制器 ) ( --model 是让生成的控制器参数列表中自动帮我们完成依赖注入生成实际变量 ) 根据 三_1 阶段的说法,...第三阶段总结 我们使用命令创建了一个 “资源控制器” 我们在 /routes/web.php 定义了一条资源路由 我们使用 BlogController 中的7个方法完成了对 博客文章 的 CURD(增删改查..._error') 第四阶段总结 我们依然创建资源控制器,但是在路由使用['only'=>'store'] 让资源路由只暴露指向 CommentController@store 的路由 我们学会了通过hasMany...路由方面 Auth 自动帮我们生成了用户操作相关路由 我们使用资源路由来映射一个 CURD 控制器 控制器和模型方面,通过命令生成的所有类文件,都几乎帮我们写好了,我们只需要完成里面的逻辑。

7.2K00
领券