亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

跟我學Laravel之路由

2024-05-04 23:26:07
字體:
來源:轉載
供稿:網友
本文主要介紹了Lavarvel框架的路由的相關概念以及示例,非常的實用,有需要的朋友可以參考下
 
 

基本路由

應用中的大多數路都會定義在 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文件中。

定義一個路由過濾器

 

復制代碼代碼如下:

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

 

如果從路由過濾器中返回了一個response,那么該response將被認為對應的是此次request,路由將不會被執行,并且,此路由中所有定義在此過濾器之后的代碼也都不會被執行。

為路由綁定過濾器

 

復制代碼代碼如下:

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

 

將過濾器綁定為控制器Action

 

復制代碼代碼如下:

Route::get('user', array('before' => 'old', 'uses' => 'UserController@showProfile'));

 

為路由綁定多個過濾器

 

復制代碼代碼如下:

Route::get('user', array('before' => 'auth|old', function()
{
    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';
}));

 

所有其后的過濾器將接收到 $response作為第三個參數:

 

復制代碼代碼如下:

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

 

基于模式的過濾器

你也可以指針對URI為一組路由指定過濾器。

 

復制代碼代碼如下:

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

 

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

 

上述案例中,admin過濾器將會應用到所有以admin/開頭的路由中。星號是通配符,將會匹配任意多個字符的組合。

還可以針對HTTP動作限定模式過濾器:

 

復制代碼代碼如下:

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

 

過濾器類

過濾器的高級用法中,還可以使用類來替代閉包函數。由于過濾器類是通過IoC container實現解析的,所有,你可以在這些過濾器中利用依賴注入(dependency injection)的方法實現更好的測試能力。

定義一個過濾器類

 

復制代碼代碼如下:

class FooFilter {

 

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

}

 

注冊過濾器類

 

復制代碼代碼如下:

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

 

命名路由

重定向和生成URL時,使用命名路由會更方便。你可以為路由指定一個名字,如下所示:

 

復制代碼代碼如下:

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

 

還可以為 controller action指定路由名稱:

 

復制代碼代碼如下:

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

 

現在,你可以使用路由名稱來創建URL和重定向:

 

復制代碼代碼如下:

$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錯誤將被拋出。
如果你希望自定義"not found"行為,可以通過傳遞一個閉包函數作為 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);

 

其次,你可以拋出Symfony/Component/HttpKernel/Exception/NotFoundHttpException異常。

更多關于處理404異常以及錯誤發生時自定義response的信息可以查看錯誤文檔。

控制器路由

Laravel不光提供了利用閉包函數處理路由的功能,還可以路由到控制器,甚至支持創建 resource controllers。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品一区二区久久精品| 国产91热爆ts人妖在线| www欧美xxxx| 色视频www在线播放国产成人| 91在线观看免费观看| 精品国产福利视频| 亚洲免费视频在线观看| 久久久亚洲国产| 欧美日韩国产二区| 国产精品国产三级国产专播精品人| 亚洲精品美女久久久| 日韩欧美在线视频日韩欧美在线视频| 日韩视频―中文字幕| 亚洲在线免费视频| 51精品国产黑色丝袜高跟鞋| 精品亚洲一区二区三区四区五区| 日韩免费看的电影电视剧大全| 国产精品视频yy9099| 久久99视频精品| 97香蕉超级碰碰久久免费软件| 欧美刺激性大交免费视频| 欧美高清视频免费观看| 日韩精品在线看| 欧美大尺度激情区在线播放| 欧美精品成人91久久久久久久| 精品久久久久久国产91| 国产精品v片在线观看不卡| 精品国产91久久久久久老师| 国产97在线观看| 欧美成人在线免费视频| 国产精品久久久久aaaa九色| 欧美高清视频在线观看| 成人性教育视频在线观看| 国产成人一区二区三区| 性色av香蕉一区二区| 777精品视频| 午夜精品福利电影| 亚洲欧洲午夜一线一品| 在线观看亚洲区| 亚洲国产精品高清久久久| 97视频在线免费观看| 北条麻妃一区二区三区中文字幕| 日韩不卡中文字幕| 欧美一级成年大片在线观看| 亚洲无限乱码一二三四麻| 欧美视频国产精品| 亚洲精品国产品国语在线| 日韩中文字幕在线观看| 国产精品成人av性教育| 亚洲女人被黑人巨大进入al| 欧美亚洲免费电影| 中文字幕欧美精品在线| 日本乱人伦a精品| 国产精品偷伦免费视频观看的| 国模gogo一区二区大胆私拍| 黑人巨大精品欧美一区二区免费| 亚洲护士老师的毛茸茸最新章节| 国产激情视频一区| 97人人模人人爽人人喊中文字| 国产精品福利小视频| 91精品国产自产91精品| 亚洲一区二区黄| 亚洲精品理论电影| 久久久久久久久久久人体| 日韩毛片在线看| 九九久久久久久久久激情| 欧美肥婆姓交大片| 91精品视频在线看| 亚洲人成电影网站色www| 亚洲二区中文字幕| 欧美激情videoshd| 欧美天天综合色影久久精品| 国产欧美日韩亚洲精品| 国产成人精品视频在线观看| 精品网站999www| 亚洲国产成人久久| 亚洲小视频在线| 国产精品福利无圣光在线一区| 欧美极度另类性三渗透| 国产精品美女www爽爽爽视频| 国产精品视频不卡| 欧美色视频日本高清在线观看| 欧美一级电影在线| 久久艳片www.17c.com| 国产啪精品视频网站| 国产视频亚洲视频| 亚洲日韩中文字幕| 国产欧美精品一区二区三区介绍| 日韩av手机在线看| 91久久精品日日躁夜夜躁国产| 国产一区二区三区在线看| 精品日韩视频在线观看| 欧美日韩国产黄| 91久久在线播放| 亚洲天堂av在线免费观看| 国产精品视频久久| 日本精品视频在线播放| 久久夜色精品亚洲噜噜国产mv| 国产日韩欧美电影在线观看| 国产xxx69麻豆国语对白| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲黄色在线观看| 亚洲欧美国内爽妇网| 欧美夜福利tv在线| 亚洲第一网站免费视频| 成人免费黄色网| 人体精品一二三区| 亚洲欧美精品中文字幕在线| 久久在精品线影院精品国产| 亚洲国产精品va| 91久久精品日日躁夜夜躁国产| 国产色婷婷国产综合在线理论片a| 日韩三级影视基地| 日韩视频在线观看免费| 欧美日韩国产一区在线| 亚洲在线免费看| 久久婷婷国产麻豆91天堂| 91精品中文在线| 日韩中文av在线| 日韩欧美高清在线视频| 日韩精品免费在线视频观看| 黄色精品一区二区| 欧美最猛性xxxxx免费| 国内精品在线一区| 91精品国产高清久久久久久91| 青青草原成人在线视频| 亚洲毛片在线观看| 国产视频精品久久久| 亚洲女人天堂av| 亚洲第一在线视频| 亚洲视频专区在线| 在线观看日韩www视频免费| 亚洲中国色老太| 久99九色视频在线观看| 久久成人综合视频| 国产综合香蕉五月婷在线| 欧美美最猛性xxxxxx| 国产精品久久久久久久一区探花| 成人国产精品色哟哟| 26uuu亚洲国产精品| 国外日韩电影在线观看| 欧美剧在线观看| 黄网动漫久久久| 日韩在线免费高清视频| 欧美成人免费全部观看天天性色| 欧亚精品中文字幕| 国产亚洲欧洲在线| 日韩精品视频在线播放| 欧美大尺度在线观看| 国产91精品久久久久久| 国产精品久久一区| 国a精品视频大全| 亚洲3p在线观看| 国产精品老女人视频| 亚洲欧美另类人妖| www.日韩.com| 这里只有精品在线观看| 亚洲成人亚洲激情| 丰满岳妇乱一区二区三区| 久久国内精品一国内精品| 国产va免费精品高清在线观看| 91av在线精品| 欧美激情第6页| 98精品国产高清在线xxxx天堂|