laravel5学习笔记(3)——复杂的路由

本文介绍了Laravel5中如何通过模板路由实现更优雅的URL设计,如/users/{name},并展示了如何处理参数、设定默认值以及使用正则表达式筛选URL内容,以区分名字和QQ号的处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

路由的url地址,除了前面讲的直接设定外,更加强大的地方在于可以通过模板的形式设定。

我们考虑这样一个问题:

要为每一个用户做一个主页,这个主页在目录/users/之下,传统的PHP,要访问名字为johnson的用户的主页,url的形式可能是:

http://localhost/users/page.php?name=johnson

通过name参数将用户名传递给网页。

这样的url不仅形式上不够优雅,对参数的管理也不方便——例如假设一个纯数字的用户名是不合法的,我们必须在page.php专门进行处理,才能把这个不合法的参数排除。

而对于laravel来说,在路由中进行适当设定后,用这样一个url就可以实现了:

  http://localhost/users/johnson

不仅形式上优雅,而且把所有url的管理放到一个文件之中,让项目的管理更加方便、一目了然。


路由解析url的形式是这样的:


Route::get('users/{name}',function($name){

echo "<h1>$name</h1>";

});

其中’users/{name}',的花括号的内容,就是模板要匹配的部分,并且把这个匹配的内容传递给参数$name,进一步传递给要执行的函数。

在路由文件中设置这样一个路由,你键入http://localhost/users/johnson,就可以看到浏览器显示“johnson"。

模板中花 括号中的内容也可以是可选的,可以设成这种形式

Route::get('users/{name?}',function($name='boss'){

echo "<h1>$name</h1>";

});

这样,如果你输入

http://localhost/users/

就显示出默认值boss的页面。


除此之外,还可以用正则式对url的内容进行进一步筛选。例如同样在”users"下面,有的人是输入名字,有的人是输入qq号,对于名字和qq我要作不同的处理,这里假定名字是纯字母构成,而qq号是纯数字构成,那么可以设置这样两条路由:

Route::get('users/{name},function($name){

echo "name:$name";

})->where('name','[A-Za-z]+');

Route::get('users/{name},function($name){

echo "qq:$name";

}))->where('name','[0-9]+');


这样输入http://localhost/users/john,就显示:name:john

输入http://localhost/users/123456,就显示:qq:123456



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值