PHP Laravel框架路由配置及设置技巧全解

Laravel框架在PHP开辟中应用特别广大,本文首要对Laravel框架中的路由设置作详细的介绍,Laravel的路由配置非常灵活,如何设置好路由对PHP应用来讲也是十三分重要的。

基本路由

澳门新浦京娱乐游戏 1

您的应用程序的大部路由就要 app/routes.php 文件中定义。Laravel
中最简便的路由由二个 U牧马人I 和二个闭包调用组成。

基本路由

基本 GET 路由复制代码
代码如下:Route::get{return ‘Hello World’;}State of Qatar;基本 POST 路由复制代码 代码如下:Route::post{return ‘Hello
World’;}卡塔尔;注册叁个路由以响应全体 HTTP 方法复制代码 代码如下:Route::any{ return ‘Hello
World’;}卡塔尔国;强迫叁个路由必须透过 HTTPS 访问复制代码 代码如下:Route::get(‘foo’, array{
return ‘Must be over HTTPS’;}State of Qatar卡塔尔;日常您须要基于路由发生URubiconLs,您能够通过使用 UHighlanderL::to 方法:复制代码 代码如下:$url = UENCOREL::to;

你的应用程序的绝大许多路由就要 app/routes.php 文件中定义。Laravel
中最轻巧易行的路由由两个 U索罗德I 和八个闭包调用组成。

路由参数复制代码
代码如下:Route::get(‘user/{id}’, function{return ‘User
‘.$id;}卡塔尔(قطر‎;可选的路由参数复制代码
代码如下:Route::get(‘user/{name?}’, function{return
$name;}卡塔尔(قطر‎;带私下认可值的可选的路由参数复制代码 代码如下:Route::get(‘user/{name?}’,
function{return $name;}State of Qatar;带正则表明式约束的路由复制代码 代码如下:Route::get(‘user/{name}’,
function->where;Route::get(‘user/{id}’, function->where;

基本 GET 路由

路由过滤器

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

路由过滤器提供了豆蔻梢头种范围访谈钦赐路由的大约的办法,那在您须求为你的站点成立要求证实区域的时候极度平价。Laravel
框架中蕴藏了风流倜傥部分路由过滤器,比方 auth 过滤器、auth.basic 过滤器、guest
过滤器、以至 csrf 过滤器。它们被寄存在 app/filters.php 文件中。

基本 POST 路由

概念一个路由过滤器复制代码
代码如下:Route::filter{if < 200卡塔尔国{return Redirect::to;
如若三个响应从叁个路由过滤器中回到,这些响应即被以为是其生龙活虎哀告的响应,路由将不被实践,任何关于那一个路由的
after 过滤器也将被收回实行。

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

为二个路由内定贰个路由过滤器复制代码
代码如下:Route::get(‘user’, array(‘before’ => ‘old’,
function(卡塔尔{return ‘You are over 200 years
old!’;}));为二个路由钦命多少个路由过滤器

登记一个路由以响应全数 HTTP 方法

复制代码 代码如下:Route::get(‘user’,
array(‘before’ => ‘auth|old’, function(State of Qatar{return ‘You are
authenticated and over 200 years old!’;}));点名路由过滤器参数复制代码 代码如下:Route::filter(‘age’,
function($route, $request, $value卡塔尔{//}卡塔尔国;Route::get(‘user’,
array(‘before’ => ‘age:200’, function(卡塔尔{return ‘Hello World’;}卡塔尔(قطر‎State of Qatar;
当路由过滤器选取到作为第多少个参数的响应 $response:复制代码 代码如下:Route::filter(‘log’,
function($route, $request, $response,
$valueState of Qatar{//}卡塔尔(قطر‎;基本路由过滤器的方式

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

你只怕希望根据 U索罗德I 为生龙活虎组路由钦点过滤器。复制代码
代码如下:Route::filter{//}卡塔尔国;Route::when;在上边的例子中,admin
过滤器将使用带全体以 admin/
开端的路由。星号作为二个通配符,将适配到拥有字符的结合。

强制五个路由必需透过 HTTPS 访问

您也足以通过点名 HTTP 方法约束方式过滤器:

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

澳门新浦京娱乐游戏,复制代码 代码如下:Route::when(‘admin/*’,
‘admin’, array;

日常您须要依据路由产生 ULX570Ls,您能够通过运用 U凯雷德L::to 方法:

过滤器类

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

对于高级级的过滤器,您能够接纳叁个类代替闭包函数。因为过滤器类是放在应用程序之外的
IoC 容器,您能够在过滤器中央银行使正视注入,更易于测量试验。

路由参数

概念二个过滤器类复制代码
代码如下:class FooFilter {public function filter(卡塔尔国{// Filter
logic…}}挂号二个依据类的过滤器复制代码 代码如下:Route::filter;

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

命名路由

可选的路由参数

命名路由在更易于在变化跳转或 UHavalLs
时钦定路由。您能够像那样为路由钦命八个名字:复制代码 代码如下:Route::get(‘user/profile’,
array(‘as’ => ‘profile’,
function;您也得认为调节器的不二等秘书诀钦定路由名字:复制代码 代码如下: Route::get(‘user/profile’,
array(‘as’ => ‘profile’, ‘uses’ => ‘UserController@showProfile’State of Qatar卡塔尔(قطر‎;
现在你在生成 UEvoqueLs 或跳转的时候利用路由的名字:

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

复制代码 代码如下:$url =
U奥迪Q5L::route;$redirect = Redirect::route;您能够利用 currentRouteName
方法得到二个路由的名字:

带暗中认可值的可选的路由参数

复制代码 代码如下:$name =
Route::currentRouteName(卡塔尔(قطر‎;

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

路由组

带正则表明式约束的路由

稍加时候你恐怕希望利用过滤器到生机勃勃组路由。您不须要为各种路由钦定过滤器,能够利用路由组:复制代码 代码如下:Route::group(array,
function(卡塔尔{Route::get{// Has Auth Filter}卡塔尔(قطر‎;Route::get(‘user/profile’,
function(卡塔尔(قطر‎{// Has Auth Filter}卡塔尔(قطر‎;}卡塔尔国;

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

子域名路由

路由过滤器

Laravel 路由也能够处理通配符的子域名,何况从域名中得到通配符参数:

路由过滤器提供了生龙活虎种约束访谈内定路由的精练的章程,那在您要求为你的站点创设须求表明区域的时候特别有效。Laravel
框架中包蕴了有的路由过滤器,举个例子 auth 过滤器、auth.basic 过滤器、guest
过滤器、以致 csrf 过滤器。它们被贮存在在 app/filters.php 文件中。

登记子域名路由复制代码
代码如下:Route::group(array(‘domain’ => ‘{account}.myapp.com’卡塔尔(قطر‎,
function(卡塔尔(قطر‎{Route::get(‘user/{id}’, function;}卡塔尔;

概念一个路由过滤器

路由前缀

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

生龙活虎组路由得以通过在性质数组中央银行使 prefix 选项为路由组增添前缀:

若是多少个响应从三个路由过滤器中回到,那一个响应即被以为是这几个央求的响应,路由将不被施行,任何有关那几个路由的
after 过滤器也将被撤消实行。

为路由组增多前缀复制代码
代码如下:Route::group(array, function(State of Qatar{Route::get{//}State of Qatar;}State of Qatar;

为一个路由内定贰个路由过滤器

路由模型绑定

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

模型绑定提供了二个大概的形式向路由中流入模型。比方,不独有注入二个客商的
ID,您能够依附钦命的 ID 注入整个客户模型实例。首先应用 Route::model
方法钦定所必要的模型:

为八个路由钦定八个路由过滤器

为模型绑定二个变量复制代码
代码如下:Route::model;然后, 定义二个暗含 {user} 参数的路由:复制代码 代码如下:Route::get(‘profile/{user}’,
function;

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

因为我们已经绑定 {user} 参数到 User 模型,一个 User
实例将被注入到路由中。由此,比方二个 profile/1 的呼吁将注入叁个 ID 为 1
的 User 实例。

点名路由过滤器参数

瞩目: 若是在数据库中绝非找到那个模型实例,将引发404不当。

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

若是您愿意钦命您自个儿定义的尚未找到的表现,您可感到 model
方法传递贰个闭包作为第多个参数:复制代码
代码如下:Route::model(‘user’, ‘User’, function(State of Qatar{throw new
NotFoundException;}卡塔尔(قطر‎; 有时你愿意选择自身的法子管理路由参数,能够运用
Route::bind 方法:复制代码
代码如下:Route::bind(‘user’, function{return
User::where->first;引发404漏洞百出

当路由过滤器选择到作为第八个参数的响应 $response:

有两种方法在路由中手动触发二个404谬误。首先,您能够利用 App::abort
方法:

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

复制代码 代码如下:App::abort;

基本路由过滤器的形式

附带,您能够抛出三个SymfonyComponentHttpKernelExceptionNotFoundHttpException
的实例。

您只怕希望依照 U奥迪Q3I 为生龙活虎组路由钦点过滤器。

越多关于管理404特别和为那些错误使用使用自定义响应的消息方可在 错误
章节中找到。

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

路由至调控器

在地点的事例中,admin 过滤器将运用带全体以 admin/
起首的路由。星号作为两个通配符,将适配到具备字符的三结合。

Laravel 不止允许你路由至闭包,也得以路由至调整器类,以至同意创设能源支配器.

您也足以通过点名 HTTP 方法限制方式过滤器:

更加的多新闻请访问 调控器 文书档案。

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

过滤器类

对于高档次和等第的过滤器,您可以应用叁个类取代闭包函数。因为过滤器类是坐落应用程序之外的
IoC 容器,您能够在过滤器中运用依赖注入,更易于测量检验。

概念四个过滤器类

class FooFilter {
public function filter()
{
// Filter logic...
}
}

挂号贰个依照类的过滤器

Route::filter('foo', 'FooFilter');

命名路由

命名路由在更便于在变幻莫测跳转或 U昂CoraLs
时钦赐路由。您能够像那样为路由钦赐三个名字:

Route::get('user/profile', array('as' => 'profile', function()
{
//
}));

你也得以为调控器的秘技钦赐路由名字:

Route::get('user/profile', array('as' => 'profile', 'uses' => 
'UserController@showProfile'));

近年来您在生成 UCRUISERLs 或跳转的时候使用路由的名字:

$url = URL::route('profile');
$redirect = Redirect::route('profile');

你能够行使 currentRouteName 方法获得贰个路由的名字:

$name = Route::currentRouteName();

路由组

稍许时候你可能希望利用过滤器到生机勃勃组路由。您无需为每一种路由钦赐过滤器,可以运用路由组:

Route::group(array('before' => 'auth'), function()
{
Route::get('/', function()
{
// Has Auth Filter
});
Route::get('user/profile', function()
{
// Has Auth Filter
});
});

子域名路由

Laravel 路由也能够管理通配符的子域名,何况从域名中赢得通配符参数:

挂号子域名路由

Route::group(array('domain' => '{account}.myapp.com'), function()
{
Route::get('user/{id}', function($account, $id)
{
//
});
});

路由前缀

大器晚成组路由得以经过在质量数组中利用 prefix 选项为路由组加多前缀:

为路由组增多前缀

Route::group(array('prefix' => 'admin'), function()
{
Route::get('user', function()
{
//
});
});

路由模型绑定

模型绑定提供了三个简易的方法向路由中流入模型。譬如,不止注入一个顾客的
ID,您可以依据内定的 ID 注入整个顾客模型实例。首先采纳 Route::model
方法钦点所必要的模型:

为模型绑定多个变量

Route::model('user', 'User');

下一场, 定义八个包罗 {user} 参数的路由:

Route::get('profile/{user}', function(User $user)
{
//
});

因为我们早已绑定 {user} 参数到 User 模型,三个 User
实例将被注入到路由中。因而,比方五个 profile/1 的乞请将注入三个 ID 为 1
的 User 实例。

留意: 假若在数据库中从未找到那么些模型实例,将吸引404荒谬。

假诺您希望钦点您自身定义的从未有过找到的作为,您可感觉 model
方法传递叁个闭包作为第三个参数:

Route::model('user', 'User', function()
{
throw new NotFoundException;
});

不经常你希望利用自个儿的点子管理路由参数,能够使用 Route::bind 方法:

Route::bind('user', function($value, $route)
{
return User::where('name', $value)->first();
});

引发404错误

有三种方法在路由中手动触发三个404不当。首先,您能够动用 App::abort
方法:

App::abort(404);

附带,您能够抛出一个SymfonyComponentHttpKernelExceptionNotFoundHttpException
的实例。

越来越多关于管理404卓殊和为这个不当接受应用自定义响应的音讯能够在 错误
章节中找到。

路由至调节器

Laravel 不止允许你路由至闭包,也得以路由至调整器类,以至同意创设财富支配器.

发表评论

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