laravel5学习笔记(3)——复杂的路由
2015-06-12 11:48
190 查看
路由的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
我们考虑这样一个问题:
要为每一个用户做一个主页,这个主页在目录/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
相关文章推荐
- php结合ACCESS的跨库查询功能
- Response.getWriter() 和Response.getOutputStream冲突
- (转)解析PHP中ob_start()函数的用法
- FragmentPagerAdapter与FragmentStatePagerAdapter区别
- LAMP环境搭建3-PHP5.6
- php 开发环境图文配置
- Windows下PHPUnit安装
- 【AS400系列】通过程序例子说明检查AS400用户密码的API-QSYGETPH
- (转)ThinkPHP系统常量
- PHP 根据IP地址获取所在城市
- [php] 解析JSON字符串
- 关于php 中file_put_contents 和fwrite file_get_contents和curl
- php xml 转array 函数 (原创)
- phpcms 循环输出
- sublime中检查php语法错误
- TP:6DD02CBB
- php中include文件变量作用域的研究
- php学习之mysql(一)找回root密码
- 关于 PHP 7 你必须知道的五件事
- laravel5学习笔记(2)——路由