跟我学Laravel之路由_php实例_脚本之家

澳门新葡亰娱乐在线 1

Laravel框架在PHP开发中使用十分广泛,本文主要对Laravel框架中的路由设置作详细的介绍,Laravel的路由配置非常灵活,如何设置好路由对PHP应用来说也是相当关键的。

基本路由

澳门新葡亰娱乐在线 1

应用中的大多数路都会定义在 app/routes.php
文件中。最简单的Laravel路由由URI和闭包回调函数组成。

基本路由

复制代码 代码如下:Route::get{ return
‘Hello World’;});

您的应用程序的绝大多数路由将在 app/routes.php 文件中定义。Laravel
中最简单的路由由一个 URI 和一个闭包调用组成。

复制代码 代码如下:Route::post{ return
‘Hello World’;});

基本 GET 路由

注册一个可以响应任何HTTP动作的路由

Route::get('/', function()
{
return 'Hello World';
});

复制代码 代码如下:Route::any{ return
‘Hello World’;});

基本 POST 路由

仅支持HTTPS的路由

Route::post('foo/bar', function()
{
return 'Hello World';
});

复制代码 代码如下:Route::get(‘foo’,
array{ return ‘Must be over HTTPS’;}));

注册一个路由以响应所有 HTTP 方法

实际开发中经常需要根据路由生成 URL,URL::to方法就可以满足此需求:

Route::any('foo', function()
{
   return 'Hello World';
});

$url = URL::to;

强制一个路由必须通过 HTTPS 访问

路由参数

Route::get('foo', array('https', function()
{
    return 'Must be over HTTPS';
}));

复制代码 代码如下:Route::get(‘user/{id}’,
function{ return ‘User ‘.$id;});

经常您需要根据路由产生 URLs,您可以通过使用 URL::to 方法:

澳门新葡亰娱乐在线,复制代码
代码如下:Route::get(‘user/{name?}’, function{ return $name;});

$url = URL::to('foo');

带有默认值的可选路由参数

路由参数

复制代码
代码如下:Route::get(‘user/{name?}’, function{ return $name;});

Route::get('user/{id}', function($id)
{
return 'User '.$id;
});

用正则表达式限定的路由参数

可选的路由参数

复制代码
代码如下:Route::get(‘user/{name}’, function->where;

Route::get('user/{name?}', function($name = null)
{
return $name;
});

Route::get(‘user/{id}’, function->where;

带默认值的可选的路由参数

当然,必要的时候你还可以传递一个包含参数限定的数组作为参数:

Route::get('user/{name?}', function($name = 'John')
{
return $name;
});

复制代码
代码如下:Route::get(‘user/{id}/{name}’, function->where(array(‘id’
=> ‘[0-9]+’, ‘name’ => ‘[a-z]+’))

带正则表达式约束的路由

如果希望在全局范围用指定正则表达式限定路由参数,可以使用 pattern 方法:

Route::get('user/{name}', function($name)
{
//
})
->where('name', '[A-Za-z]+');
Route::get('user/{id}', function($id)
{
//
})
->where('id', '[0-9]+');

复制代码 代码如下:Route::pattern;

路由过滤器

Route::get(‘user/{id}’, function{ // Only called if {id} is numeric.});

路由过滤器提供了一种限制访问指定路由的简单的方法,这在您需要为您的站点创建需要认证区域的时候非常有用。Laravel
框架中包含了一些路由过滤器,比如 auth 过滤器、auth.basic 过滤器、guest
过滤器、以及 csrf 过滤器。它们被存放在 app/filters.php 文件中。

如果想在路由范围外访问路由参数,可以使用 Route::input 方法:

定义一个路由过滤器

复制代码 代码如下:Route::filter{ if == 1)
{ // }});

Route::filter('old', function()
{
if (Input::get('age') < 200)
{
return Redirect::to('home');
}
});

路由过滤器

如果一个响应从一个路由过滤器中返回,这个响应即被认为是这个请求的响应,路由将不被执行,任何关于这个路由的
after 过滤器也将被取消执行。

路由过滤器提供了非常方便的方法来限制对应用程序中某些功能访问,例如对于需要验证才能访问的功能就非常有用。Laravel框架自身已经提供了一些过滤器,包括
auth过滤器、auth.basic过滤器、guest过滤器以及csrf过滤器。这些过滤器都定义在app/filter.php文件中。

为一个路由指定一个路由过滤器

复制代码 代码如下:Route::filter{ if <
200) { return Redirect::to;

Route::get('user', array('before' => 'old', function()
{
return 'You are over 200 years old!';
}));

如果从路由过滤器中返回了一个response,那么该response将被认为对应的是此次request,路由将不会被执行,并且,此路由中所有定义在此过滤器之后的代码也都不会被执行。

为一个路由指定多个路由过滤器

复制代码 代码如下:Route::get(‘user’,
array(‘before’ => ‘old’, function(){ return ‘You are over 200 years
old!’;}));

Route::get('user', array('before' => 'auth|old', function()
{
return 'You are authenticated and over 200 years old!';
}));

将过滤器绑定为控制器Action

指定路由过滤器参数

复制代码 代码如下:Route::get(‘user’,
array(‘before’ => ‘old’, ‘uses’ => ‘UserController@showProfile’));

Route::filter('age', function($route, $request, $value)
{
//
});
Route::get('user', array('before' => 'age:200', function()
{
return 'Hello World';
}));

复制代码 代码如下:Route::get(‘user’,
array(‘before’ => ‘auth|old’, function(){ return ‘You are
authenticated and over 200 years old!’;}));

当路由过滤器接收到作为第三个参数的响应 $response:

复制代码 代码如下:Route::filter(‘age’,
function($route, $request, $value){ //});

Route::filter('log', function($route, $request, $response, $value)
{
//
});

Route::get(‘user’, array(‘before’ => ‘age:200’, function(){ return
‘Hello World’;}));

基本路由过滤器的模式

所有其后的过滤器将接收到 $response作为第三个参数:

您可能希望根据 URI 为一组路由指定过滤器。

复制代码 代码如下:Route::filter(‘log’,
function($route, $request, $response, $value){ //});

Route::filter('admin', function()
{
//
});
Route::when('admin/*', 'admin');

你也可以指针对URI为一组路由指定过滤器。

在上面的例子中,admin 过滤器将应用带所有以 admin/
开头的路由。星号作为一个通配符,将适配到所有字符的组合。

复制代码 代码如下:Route::filter{ //});

您也可以通过指定 HTTP 方法约束模式过滤器:

Route::when;

Route::when('admin/*', 'admin', array('post'));

上述案例中,admin过滤器将会应用到所有以admin/开头的路由中。星号是通配符,将会匹配任意多个字符的组合。

过滤器类

还可以针对HTTP动作限定模式过滤器:

对于高级的过滤器,您可以使用一个类代替闭包函数。因为过滤器类是位于应用程序之外的
IoC 容器,您能够在过滤器中使用依赖注入,更易于测试。

复制代码 代码如下:Route::when(‘admin/*’,
‘admin’, array;

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图