Laravel5.1学习之旅(二) 路由

Laravel5.1学习之旅(二) 路由 上一篇:Laravel5.1学习之旅(一) 安装Laravel5.1 访问一个页面,你可以不需要Model、View和Controller,但必然需要路由(Route) 本文示例代码可能会涉及到Controller、Model、View,这些内容将会在下一篇介绍,对于学习本文没有影响 路由是什么 学过计算机网络的都知道,路由负责将接收到的数据包拆解出目标ip地址等信息,然后根据路由表进行分组转发给下一个目标。 Web框架中的路由也是如此,它将请求中的URL拆解为控制器、方法、参数等信息,然后调用相应的控制器文件来处理业务,最后将带有数据的视图呈现给用户。当然,Laravel显得更为简单粗暴,它直接提供了一个路由表app/Http/route.php,你可以在该文件定制你的路由规则。这样你的路由非常直观且灵活,代价就是当你要添加一个新的请求时必须要在该文件添加一条新的路由规则。 最简单的路由 废话懒得说,直接上代码: Route::get('/',function(){ return 'Hello foam'; }); 可以看到,上面的Route::get需要传递两个参数,第一个是URL,第二个是闭包方法。因为是闭包方法,你可以在里面写业务逻辑,这里我们只简单返回一个Hello foam。 在浏览器中输入http://foam.com(网站根目录),页面会打印出Hello foam。 基础路由 基本路由: <?php //以get方法访问http://foam.com/home时将执行HomeController里的index方法 Route::get('home','HomeController@index'); //除此之外还有post、put、delete等方式。一般用得比较多的是get和post Route::post('home','HomeController@index'); Route::put('home','HomeController@index'); Route::delete('home','HomeController@index'); 带有参数的路由: 很多场景的url都是带有参数的,例如文章详细页http://foam.com/article/9434 Route::get('article/{id}','ArticleController@detail'); 如此一来,ArticleController的detail方法便能接收到id参数,具体方法我们下一篇介绍 路由群组: 路由群组一方面将一组相关路由写在一块,提高了代码可读性;另一方面简化了代码,可利用中间件统一处理相关代码 举个例子,假如我们需要写个后台管理,URL为http://foam.com/backend/***/,命名空间为Admin,且需要使用中间件AdminAuth对后台管理系统的所有请求作权限验证。 没有群组,需要这么写: Route::get('backend/aaaaa', ['middleware' => 'AdminAuth', 'Admin\AaaController@index']); Route::get('backend/bbbbb', ['middleware' => 'AdminAuth', 'Admin\BbbController@index']); Route::get('backend/ccccc', ['middleware' => 'AdminAuth', 'Admin\CccController@index']); 现在让我们的群组重新演绎: Route::group(['prefix'=>'backend','namespace'=>'Admin','middleware'=>'AdminAuth'],function(){ Route::get('/aaaaa','AaaController@index'); Route::get('/bbbbb','BbbController@index'); Route::get('/ccccc','CccController@index'); }); 群组里prefix是URL前缀,namespace是命名空间,middleware是中间件,这些都是可选的。 群组也是可以嵌套的,当部分页面需要同一个中间件处理时,可以这么做: Route::group(['namespace'=>'Home'],function(){ Route::get('/', 'PageController@index'); Route::get('task/{id}','TaskController@detail'); Route::group(['middleware'=>'UserAuth'],function(){ Route::get('myhome','MyhomeController@index'); Route::get('myhome/taskDetail/{id}','MyhomeController@taskDetail'); }); });

2015-09-12 · 1 分钟 · 69 字

Laravel5.1 目录结构解析

学习一门框架,首先要了解的就是目录结构。对目录结构清晰就可以着手学习了~ 这里不作新特性的介绍,权当目录结构手册看吧。若发现有何不恰当的地方请联系我哦~ 注:写本文时参照的是5.1.4版本 目录或文件 说明 |– app 包含Controller、Model、路由等在内的应用目录,大部分业务将在该目录下进行 | |– Console 命令行程序目录 | | |– Commands 包含了用于命令行执行的类,可在该目录下自定义类 | | |– Kernel.php 命令调用内核文件,包含commands变量(命令清单,自定义的命令需加入到这里)和schedule方法(用于任务调度,即定时任务) | |– Events 事件目录 | |– Exceptions 包含了自定义错误和异常处理类 | |– Http HTTP传输层相关的类目录 | | |– Controllers 控制器目录 | | |– Kernel.php 包含http中间件和路由中间件的内核文件 | | |– Middleware 中间件目录 | | |– Requests 请求类目录 | | |– routes.php 强大的路由 | |– Jobs 该目录下包含队列的任务类 | |– Listeners 监听器目录 | |– Providers ...

2015-07-22 · 2 分钟 · 245 字