首页 > 开发 > PHP > 正文

跟我学Laravel之路由

2024-05-04 22:18:26
字体:
来源:转载
供稿:网友

基本路由

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

基本 GET 路由

代码如下:
Route::get('/', function()
{
    return 'Hello World';
});

基本 POST 路由

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

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

代码如下:
Route::any('foo', function()
{
    return 'Hello World';
});

仅支持HTTPS的路由

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

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

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

路由参数

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

可选路由参数

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

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

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

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

代码如下:
Route::get('user/{name}', function($name)
{
    //
})
->where('name', '[A-Za-z]+');

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

传递参数限定的数组

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

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

定义全局模式

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

代码如下:
Route::pattern('id', '[0-9]+');

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

访问路由参数

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

代码如下:
Route::filter('foo', function()
{
    if (Route::input('id') == 1)
    {
        //
    }
});

路由过滤器

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表