《PHP应用:跟我学Laravel之路由》要点:
本文介绍了PHP应用:跟我学Laravel之路由,希望对您有用。如果有疑问,可以联系我们。
基本路由PHP实战
应用中的大多数路都会定义在 app/routes.php 文件中.最简单的Laravel路由由URI和闭包回调函数组成.PHP实战
基本 GET 路由PHP实战
基本 POST 路由PHP实战
注册一个可以响应任何HTTP动作的路由PHP实战
仅支持HTTPS的路由PHP实战
实际开发中经常需要根据路由生成 URL,URL::to办法就可以满足此需求:PHP实战
$url = URL::to('foo');PHP实战
路由参数PHP实战
可选路由参数PHP实战
带有默认值的可选路由参数PHP实战
用正则表达式限定的路由参数PHP实战
Route::get('user/{id}', function($id)
{
//
})
->where('id', '[0-9]+');
PHP实战
传递参数限定的数组PHP实战
当然,必要的时候你还可以传递一个包括参数限定的数组作为参数:PHP实战
定义全局模式PHP实战
如果希望在全局范围用指定正则表达式限定路由参数,可以使用 pattern 办法:PHP实战
Route::get('user/{id}', function($id)
{
// Only called if {id} is numeric.
});
PHP实战
拜访路由参数PHP实战
如果想在路由范围外拜访路由参数,可以使用 Route::input 方法:PHP实战
路由过滤器PHP实战
路由过滤器提供了非常方便的方法来限制对应用程序中某些功能拜访,例如对于需要验证才能拜访的功能就非常有用.Laravel框架自身已经提供了一些过滤器,包括 auth过滤器、auth.basic过滤器、guest过滤器以及csrf过滤器.这些过滤器都定义在app/filter.php文件中.PHP实战
定义一个路由过滤器PHP实战
如果从路由过滤器中返回了一个response,那么该response将被认为对应的是此次request,路由将不会被执行,而且,此路由中所有定义在此过滤器之后的代码也都不会被执行.PHP实战
为路由绑定过滤器PHP实战
将过滤器绑定为控制器ActionPHP实战
为路由绑定多个过滤器PHP实战
指定过滤器参数PHP实战
Route::get('user', array('before' => 'age:200', function()
{
return 'Hello World';
}));
PHP实战
所有其后的过滤器将接收到 $response作为第三个参数:PHP实战
基于模式的过滤器PHP实战
你也可以指针对URI为一组路由指定过滤器.PHP实战
Route::when('admin/*', 'admin');
PHP实战
上述案例中,admin过滤器将会应用到所有以admin/开头的路由中.星号是通配符,将会匹配任意多个字符的组合.PHP实战
还可以针对HTTP动作限定模式过滤器:PHP实战
过滤器类PHP实战
过滤器的高级用法中,还可以使用类来替代闭包函数.由于过滤器类是通过IoC container实现解析的,所有,你可以在这些过滤器中利用依赖注入(dependency injection)的办法实现更好的测试能力.PHP实战
定义一个过滤器类PHP实战
public function filter()
{
// Filter logic...
}PHP实战
}
PHP实战
注册过滤器类PHP实战
命名路由PHP实战
重定向和生成URL时,使用命名路由会更便利.你可以为路由指定一个名字,如下所示:PHP实战
还可以为 controller action指定路由名称:PHP实战
现在,你可以使用路由名称来创建URL和重定向:PHP实战
$redirect = Redirect::route('profile');
PHP实战
可以使用currentRouteName办法来获取当前运行的路由名称:PHP实战
路由组PHP实战
有时你可能必要为一组路由应用过滤器.使用路由组就可以避免单独为每个路由指定过滤器了:PHP实战
Route::get('user/profile', function()
{
// Has Auth Filter
});
});
PHP实战
子域名路由PHP实战
Laravel中的路由功能还支持通配符子域名,你可以在域名中指定通配符参数:PHP实战
注册子域名路由PHP实战
Route::get('user/{id}', function($account, $id)
{
//
});PHP实战
});
PHP实战
路由前缀PHP实战
可以通过prefix属性为组路由设置前缀:PHP实战
为路由组设置前缀PHP实战
Route::get('user', function()
{
//
});PHP实战
});
PHP实战
路由与模型绑定PHP实战
模型绑定,为在路由中注入模型实例提供了便捷的途径.例如,你可以向路由中注入匹配用户ID的整个模型实例,而不是仅仅注入用户ID.首先,使用 Route::model 办法指定要被注入的模型:PHP实战
将参一个模型PHP实战
Route::model('user', 'User');
然后,定义一个包括{user}参数的路由:PHP实战
由于我们已将{user}参数绑定到了User模型,因此可以向路由中注入一个User实例.例如,对profile/1的拜访将会把ID为1的User实例注入到路由中.PHP实战
注意: 如果在数据库中无法匹配到对应的模型实例,404错误将被抛出.
如果你希望自定义"not found"行为,可以通过传递一个闭包函数作为 model 办法的第三个参数:PHP实战
如果你想自己实现路由参数的解析,只需使用Route::bind办法即可:PHP实战
抛出 404 差错PHP实战
有两种从路由中手动触发404错误的办法.首先,你可以使用App::abort办法:PHP实战
其次,你可以抛出Symfony\Component\HttpKernel\Exception\NotFoundHttpException异常.PHP实战
更多关于处理404异常以及差错发生时自定义response的信息可以查看差错文档.PHP实战
控制器路由PHP实战
Laravel不光提供了利用闭包函数处置路由的功能,还可以路由到控制器,甚至支持创建 resource controllers.PHP实战
《PHP应用:跟我学Laravel之路由》是否对您有启发,欢迎查看更多与《PHP应用:跟我学Laravel之路由》相关教程,学精学透。维易PHP学院为您提供精彩教程。