本文将带您了解关于laravel第二讲:路由的定义及与控制器绑定的新内容,同时我们还将为您解释laravel路由机制的相关知识,另外,我们还将为您提供关于Laravel5基础教程||2.路由:链接与控
本文将带您了解关于laravel第二讲:路由的定义及与控制器绑定的新内容,同时我们还将为您解释laravel路由机制的相关知识,另外,我们还将为您提供关于Laravel 5 基础教程 || 2.路由:链接与控制器的连接者、Laravel 5 基础教程 || 2.路由:链接与控制器的连接者 - 表严肃、Laravel 5 系列教程二:路由,视图,控制器工作流程、Laravel 5.2 二、HTTP路由、创建控制器 与 资源路由的实用信息。
本文目录一览:- laravel第二讲:路由的定义及与控制器绑定(laravel路由机制)
- Laravel 5 基础教程 || 2.路由:链接与控制器的连接者
- Laravel 5 基础教程 || 2.路由:链接与控制器的连接者 - 表严肃
- Laravel 5 系列教程二:路由,视图,控制器工作流程
- Laravel 5.2 二、HTTP路由、创建控制器 与 资源路由
laravel第二讲:路由的定义及与控制器绑定(laravel路由机制)
我们知道,网络中的路由器是用来选择路径、转发分组的,那么框架中的路由是用来干嘛的呢?这里的路由是用来接收http请求的路径,通过设置路径来访问特定程序的功能。路由是框架的核心功能之一,基本所有主流框架都有路由功能。并且,我们可以通过设置路由来将一些长的、深的路径该成短的、浅的路径(非常利于SEO的一个功能)。默认路由文件
所有的laravel路由都在根目录的routes目录下的路由文件定义,框架默认自动加载这个目录下的文件。我们看看routes/web.PHP这个文件
use Illuminate\Support\Facades\Route; Route::get('/', function () { return view('welcome'); });
基本路由
现在,我们在web.PHP文件中,新建一个最简单的路由,代码如下:
Route::get('index', function () { return study laravel; });
现在,我们在浏览器中输入localhost:8000/index就可以看到study laravel这句话了。
常见路由方法
除了上述了get方法外,经常使用的路由方法有:post,put,delete,any,match。
这里的any方法表示不管是什么请求方式都可以,可以是get/post/put等请求方式,它都处理。而match可以用来指定多个请求,下面来演示match的用法:
Route::match(['get', 'post'], list, function () { return 'list'; });
参数传递
经常的,我们在路由中还会加入参数。比如/news/1这样是非常的常见。lavarel的路由方法支持参数的传递,如:
Route::get('news/{id}', function ($id) { return 'news:' . $id; });
上述的路由虽然能够传递参数,但还是不能满足我的需求,我希望{id}这个参数必须是数字,那么,可以这样:
Route::get('news/{id}', function ($id) { return 'news:' . $id; })->where('id', '\d+');
我们还可以传递多个参数,闭包中的参数会自动一一对应,如:
Route::get('/name/{name}/age/{age}', function($name, $age) { echo name:$name age:$age; })->where(['name' => '\w+', 'age' => '\d+']);
路由与控制器绑定
首先,我们创建一个控制器文件app\Http\Controllers\IndexController.PHP,代码如下:
<?PHP namespace App\Http\Controllers; class IndexController extends Controller { public function news ($id) { echo news:$id; } }
现在修改路由文件web.PHP
Route::get('news/{id}', 'IndexController@news')->where('id', '\d+');
现在通过/news/1就能访问到IndexController控制器中的news方法了。
若创建了app/Http/Controllers/Home/IndexController.PHP,那么这个控制器的路由该如何设置呢?方法如下:
Route::get('home', 'Home\IndexController@index');
Laravel 5 基础教程 || 2.路由:链接与控制器的连接者
Laravel 5 基础教程 || 2.路由:链接与控制器的连接者 - 表严肃
直观的说,路由是用来解析地址栏中域名之后的部分的。
例子:baidu.com/lala
注意域名后的/lala,这个就是一个路由规则。路由规则可以使我们灵活的控制用户的访问范围和深度,在Laravel中甚至可以被用于权限管理哦。
创建路由
路由文件
比如说你的Laravel项目目录叫mySite,那么路由控制文件就在/mySite/app/Http/routes.php中
这个文件一开始只有一条规则,类似这样(如果你发现不止一条,没关系,反正不管有多少我们都会删掉重写的,任性(?^?) ):
点击下载“修复打印机驱动工具”;
这是一条定义首页的路由规则,就是这条规则使我们看到了Laravel的默认首页,也就是安装成功后的的界面。(类似下方)
Route::get(''/'', function () { return view(''welcome'');});
无耻硬广进 Laravel 5视频教程地址 - 表严肃讲堂(可试听) 所有课程: biaoyansu.com
无耻硬广出
第一个路由~
Route::(''hello'', function(){ return ''Hello.''; });
解释:第一个传参是路由的地址(例:+baidu.com/hello),第二个传参是一个函数,聪明的你一定能猜到了(mua~)这个函数就是当路由匹配时触发执行的,如果你现在的测试地址是+localhost:8888那么,那么当你在浏览器地址栏输入+localhost:8888/hello然后来一个低调的回车你就会看到一个低调的“Hello.”
细心的同学可能发现我们使用的是return而不是echo,为什么可以直接打印字符串?Laravel就是这样的小背心,当他检测到你直接返回了字符串时会使用echo的方式,不止如此,当检测到返回的是数组时Laravel会将数组转换成json返回(暖男一枚,鉴定完毕)。
Route::get(''hello'', function () { return [ ''greet'' => ''Hello'', ''name'' => ''XiaoBeiXin'' ];});
会输出:
路由传参
如果我们想在Hello后加动态的添加人名怎么办?
这么干:
Route::get(''hello/{name}'', function($name){ return ''Hello '' . $name . ''.''; });
地址栏传参localhost:8888/hello/LiMing
输出:
那么怎么输出一个HTML文件雷?
不着急,后面和View一起讲。
Laravel 5 基础教程 || 2.路由:链接与控制器的连接者 - 表严肃
Laravel 5 基础教程 || 2.路由:链接与控制器的连接者 - 表严肃
教程目录
- 1.安装与部署 - 表严肃
- 2.路由:链接与控制器的连接者 - 表严肃
- 3.控制器:任务的分发者 - 表严肃
直观的说,路由是用来解析地址栏中域名之后的部分的。
例子:baidu.com/lala
注意域名后的/lala
,这个就是一个路由规则。路由规则可以使我们灵活的控制用户的访问范围和深度,在Laravel中甚至可以被用于权限管理哦。
创建路由
路由文件
比如说你的Laravel项目目录叫mySite
,那么路由控制文件就在/mySite/app/Http/routes.php
中
这个文件一开始只有一条规则,类似这样(如果你发现不止一条,没关系,反正不管有多少我们都会删掉重写的,任性(︶^︶) ):
这是一条定义首页的路由规则,就是这条规则使我们看到了Laravel的默认首页,也就是安装成功后的的界面。(类似下方)
Route::get(''/'', function () {
return view(''welcome'');
});
无耻硬广进
- Laravel 5视频教程地址 - 表严肃讲堂(可试听)
- 所有课程: biaoyansu.com
无耻硬广出
第一个路由~
Route::get(''hello'', function()
{
return ''Hello.'';
});
解释:第一个传参是路由的地址(例:baidu.com/hello
),第二个传参是一个函数,聪明的你一定能猜到了(mua~)这个函数就是当路由匹配时触发执行的,如果你现在的测试地址是localhost:8888
那么,那么当你在浏览器地址栏输入localhost:8888/hello
然后来一个低调的回车你就会看到一个低调的“Hello.”
细心的同学可能发现我们使用的是return
而不是echo
,为什么可以直接打印字符串?Laravel就是这样的小背心,当他检测到你直接返回了字符串时会使用echo的方式,不止如此,当检测到返回的是数组时Laravel会将数组转换成json返回(暖男一枚,鉴定完毕)。
Route::get(''hello'', function () {
return [
''greet'' => ''Hello'',
''name'' => ''XiaoBeiXin''
];
});
会输出:
路由传参
如果我们想在Hello后加动态的添加人名怎么办?
这么干:
Route::get(''hello/{name}'', function($name)
{
return ''Hello '' . $name . ''.'';
});
地址栏传参localhost:8888/hello/LiMing
输出:
那么怎么输出一个HTML文件雷?
不着急,后面和View一起讲。
有问题请在下方评论,/撒花~
教程目录
- 1.安装与部署 - 表严肃
- 2.路由:链接与控制器的连接者 - 表严肃
- 3.控制器:任务的分发者 - 表严肃
Laravel 5 系列教程二:路由,视图,控制器工作流程
原文来自:https://jellybool.com/post/programming-with-laravel-5-routers-views-controllers-workflow
上一篇教程我们走了那么长的路,终于把Laravel安装好了,这一篇教程我们就要进入Laravel的神奇世界了,主要是讲解Laravel的Router,Views,Controllers的工作流程,目的也就是让大家明白Laravel在处理一个get请求的时候是如何工作的。
在开始之前,我们首先得将我们的服务器启动起来,如果你使用Laravel的artisan,你可以直接:
php artisan serve
然后访localhost:8000,就可以看到Laravel了
我这里还是使用Homestead:
homestead up
homestead 启动之后,我们就可以愉快开始写代码了。
Laravel 文件目录
然后访问我们上一节设置好的域名:blog.dev,也可以看到我们的Laravel。如果你在安装或者使用Homestead的时候遇到任何问题,都可以直接问我。
首先,对于一个新手来接触Laravel的时候,可能你会对Laravel的文件目录感觉到很困惑,因为实在是太多东西了,到底什么是Console,Events,Providers...一大堆东西在这里。
但是不用担心,我们后续的教程会陆续讲解相关的内容。
目前我们关心的是Http/这个文件夹,你可以就简单地记忆为这个文件夹就是用来出来http请求的,比如我们在访问blog.dev的时候,Laravel是怎么将那个可爱的页面响应给我们的?这个就可以在app/Http/routes.php这个文件里面找到,就像上图显示的一样:
Route::get(''/'', function () { return view(''welcome'');});
这是什么意思呢?其实这里你可以这样理解:我们注册这样一个路由,当用户发送一个get请求(简单理解就是在浏览器地址栏中访问)的时候,什么样的get请求呢?也就是什么样的浏览地址呢?恩,就是网站的根目录,也就是当一个用户访问我们站点的根目录的时候,我们应该给用户什么样的响应呢?这里我们就直接执行一个函数function () {},这个函数里面就负责加载一个视图return view(''welcome'');,这个试图文件位于resources/views/welcome.blade.php,这里的试图文件后缀名blade.php可能会比较疑惑,因为Laravel使用的是blade的模板引擎,如果你接触过其他的模板引擎如Twig,Smarty等,对模板引擎的理解可能会清晰一点。但是如果你在这里还是不太明白,没有关系,我后续会有专门的课程介绍blade模板。现在需要记住的是:Laravel的模板文件就是blade.php结尾的。
你可以直接打开resources/views/welcome.blade.php这个文件来看,里面其实就是一些HTML代码,easy enough。
所以上面的路由注册其实就是负责解决访问blog.dev的时候的响应。那么我们来尝试一个Hello World简单的返回:
Route::get(''/'', function () { return ''Hello World'';// return view(''welcome'');});
回到浏览器,再次访问blog.dev,我们就会看到上面写的Hello World。
参数
试着传入参数,我们重新注册一个路由:
Route::get(''/'', function () { return view(''welcome'');});Route::get(''user/{name}'', function ($name) { return ''Hello ''.$name;});
上面第二个就是我们自己重新注册的路由,在路由中得变量用大括号{}包裹起来,然后在处理函数中接收这个参数,访问http://blog.dev/user/guys,可以看到下面的返回结果。
上面这个时候,我们如果访问http://blog.dev/user,这是报错的,因为这个路由期望你在后面输入一个变量$name,但是你并没有,所以会报错,我们可以通过可选参数来实现这个目的
可选参数:
Route::get(''user/{name?}'', function ($name = null) { return ''Hello ''.$name;});
这个时候,再次访问http://blog.dev/user就不会报错了,但是貌似这个时候只返回了Hello,我们也可以设置一个默认值:
Route::get(''user/{name?}'', function ($name = ''JellyBool'') { return ''Hello ''.$name;});
这个时候,如果我们没有输入$name这个变量,我们会返回 Hello JellyBool
使用控制器
上面注册的这些路由是直接使用了匿名函数来返回字符串或加载视图给我们,但是我们的控制器(controller)去哪里了呢?我们怎么使用控制器呢(controllers)?首先我们需要明白,在注册路由是使用控制器在Laravel中大概是这样写的:
Route::get(''/'',''ArticleController@index'');
我们将routes.php中原来的注册路由全部删掉,只保留上面这一行代码:这行代码的意思是,当用户请求我们的网站跟目录的时候,我需要找到ArticleController并执行它的index方法,接下来,我们就需要创建我们的ArticleController了:
在命令行中执行:
php artisan make:controller ArticleController
上一篇文章说过artisan这个工具很强大,他可以用来生成我们在开发当中需要的很多东西,给我们的开发带来了很多的便利,如果你花点时间慢慢适应一下,我敢肯定,你以后会爱上Laravel的,会爱上artisan的。这里只是使用了artisan得make:controller命令,其实artisan可以干的事情很多,我们在这个教程中会一一接触到,如果你迫不及待,可以直接看官方文档:
http://laravel.com/docs/5.1/artisan
上面的命令给我们在app/Http/Controllers/目录下生成了ArticleController.php,我们打开它来看看:
在这个文件里面,Laravel帮我们生成了一堆的方法:index(),show(),create()...等,然后我们刚刚在Router(routes.php文件)中注册的路由需要使用ArticleController的index方法,我们就在index()方法里面加载一个视图:
public function index() { return view(''articles.lists''); }
创建视图文件
这个视图文件应该是位于resources/views/articles/lists.blade.php,但是在views文件夹当中,我们并没有articles/这个文件夹和lists.blade.php,所以我们需要手动创建之。
这里需要注意的是,Laravel的view()方法会默认从views文件夹查找视图文件,所以你不用在view()方法中加入resources/views这个路径,而且你也不用将blade.php写上,Laravel会自动处理这些事情,至于views()方法articles.lists中得.就使用了路径别名,你也可以使用/来写成这样articles/lists
创建好之后,在articles/lists.blade.php写入简单地HTML代码:
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/html"><head> <meta charset="UTF-8"> <title>Article lists page</title> </head><body><h1>这是文章列表页面</h1></body></html>
然后访问blog.dev/,我们就可以看到上面的模板内容了:
到这里,不知道你对Laravel的Router,Views,Controllers这三个的工作流程有没有一个清晰的认识,通常我们需要实现某个功能(或者说新创建一个页面)都是这样的:
1. 在routes.php中注册路由 ---> 2. 创建对于的控制器 ---> 3. 在控制器中得对于方法加载视图
对应得实际操作大概是这样的:
1. Route::get(''/'',''ArticleController@index'');2. php artisan make:controller ArticleController3. public function index() { return view(''articles.lists''); }
下一节
关于Laravel的Router,Views,Controllers的工作流程就大概讲到这里,如果你有任何疑问,可以随时在评论里面问我。然后下一节的内容会讲以下的内容:
数据库的配置和Laravel的Migration用法
将变量传给视图文件
blade模板的基本用法
最后:
Happy Hacking
Laravel 5.2 二、HTTP路由、创建控制器 与 资源路由
一、HTTP路由
所有路由都定义在 App\Providers\RouteServiceProvider 类载入的 app/Http/routes.PHP文件中。
1. 基本路由
简单的 Laravel 路由只接受一个 URI 和一个闭包
对于常见的 HTTP 请求,Laravel 有以下几种路由
其中,$callback 可以是一个闭包,也可以是一个控制器方法。实际上,在开发中有不少情况是用作控制器方法的。
2. 路由参数
二、创建控制器
使用 Artisan 命令创建 PHP artisan make:controller UserController
现在,在 app/Http/Controllers 这个控制器目录下就生成了 UserController.PHP 的控制器文件。
三、高级路由
1. 命名路由
name(
name(
2. 路由分组
2.1 路由前缀和命名空间
例如,有两条指向控制器方法的路由
拿第一条来说,
参数一:PHP“ ),这个请求被映射到第二个参数中指定的控制器方法。注意,网站根目录是入口文件所在目录,在 Laravel 中就是 public 目录,配置服务器时最好也指向这里。
参数二:方法。
显然,两条路由的 URI 和 控制器方法 都有相同的部分,那么,启用路由分组可以提取出公共部分:
2.2 资源路由
资源路由就是映射到资源控制器的路由,Laravel 资源控制器内置了对资源增删改查的 7 个方法以及 7 条路由。
首先,创建资源控制器 ArticleController
这样就生成了资源控制器在 app/Http/Controllers/Admin/ArticleController.PHP 文件(Admin 文件夹不存在时会自动创建),内置的 7 个方法如下 :
然后,定义资源路由 。这里我还是选择在路由分组下定义,定义一条就好
最后,查看路由。有了资源控制器 和 资源路由,就可以看一下对以上 7 个方法的 HTTP 请求方式了。
使用 Artisan 命令 方法、中间件都罗列出来了。
总结
以上是小编为你收集整理的Laravel 5.2 二、HTTP路由、创建控制器 与 资源路由全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
Laravel相关文章
- • php – Laravel 5自定义验证重定向
- • php – 在Laravel 4中上传多个文件
- • laravel 使用测试工厂Factory添加测试数
- • mysql – Laravel 5.1迁移和种子无法
- • php – 获取Eloquent模型关系的数组
- • php – 使用Laravel中的Eloquent检索关
- • javascript – 在Laravel 5.3中使用Vu
- • 什么是运行Laravel的命令’php artisan
- • php – Laravel“没有预定的命令可以
- • php – laravel 5控制器中的CSV导出
今天关于laravel第二讲:路由的定义及与控制器绑定和laravel路由机制的介绍到此结束,谢谢您的阅读,有关Laravel 5 基础教程 || 2.路由:链接与控制器的连接者、Laravel 5 基础教程 || 2.路由:链接与控制器的连接者 - 表严肃、Laravel 5 系列教程二:路由,视图,控制器工作流程、Laravel 5.2 二、HTTP路由、创建控制器 与 资源路由等更多相关知识的信息可以在本站进行查询。
本文标签: