欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

學(xué)習(xí)Laravel路由的方法-創(chuàng)新互聯(lián)

本篇內(nèi)容介紹了“學(xué)習(xí)Laravel路由的方法”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

10年積累的網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶(hù)對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶(hù)得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有漳平免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

基本路由

應(yīng)用中的大多數(shù)路都會(huì)定義在 app/routes.php 文件中。最簡(jiǎn)單的Laravel路由由URI和閉包回調(diào)函數(shù)組成。

基本 GET 路由

復(fù)制代碼 代碼如下:

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


基本 POST 路由

復(fù)制代碼 代碼如下:

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


注冊(cè)一個(gè)可以響應(yīng)任何HTTP動(dòng)作的路由

復(fù)制代碼 代碼如下:

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


僅支持HTTPS的路由

復(fù)制代碼 代碼如下:

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


實(shí)際開(kāi)發(fā)中經(jīng)常需要根據(jù)路由生成 URL,URL::to方法就可以滿(mǎn)足此需求:

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

路由參數(shù)

復(fù)制代碼 代碼如下:

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


可選路由參數(shù)

復(fù)制代碼 代碼如下:

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


帶有默認(rèn)值的可選路由參數(shù)

復(fù)制代碼 代碼如下:

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


用正則表達(dá)式限定的路由參數(shù)

復(fù)制代碼 代碼如下:

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

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


傳遞參數(shù)限定的數(shù)組

當(dāng)然,必要的時(shí)候你還可以傳遞一個(gè)包含參數(shù)限定的數(shù)組作為參數(shù):

復(fù)制代碼 代碼如下:

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


定義全局模式

如果希望在全局范圍用指定正則表達(dá)式限定路由參數(shù),可以使用 pattern 方法:

復(fù)制代碼 代碼如下:

Route::pattern('id', '[0-9]+');

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


訪(fǎng)問(wèn)路由參數(shù)

如果想在路由范圍外訪(fǎng)問(wèn)路由參數(shù),可以使用 Route::input 方法:

復(fù)制代碼 代碼如下:

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


路由過(guò)濾器

路由過(guò)濾器提供了非常方便的方法來(lái)限制對(duì)應(yīng)用程序中某些功能訪(fǎng)問(wèn),例如對(duì)于需要驗(yàn)證才能訪(fǎng)問(wèn)的功能就非常有用。Laravel框架自身已經(jīng)提供了一些過(guò)濾器,包括 auth過(guò)濾器、auth.basic過(guò)濾器、guest過(guò)濾器以及csrf過(guò)濾器。這些過(guò)濾器都定義在app/filter.php文件中。

定義一個(gè)路由過(guò)濾器

復(fù)制代碼 代碼如下:

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


如果從路由過(guò)濾器中返回了一個(gè)response,那么該response將被認(rèn)為對(duì)應(yīng)的是此次request,路由將不會(huì)被執(zhí)行,并且,此路由中所有定義在此過(guò)濾器之后的代碼也都不會(huì)被執(zhí)行。

為路由綁定過(guò)濾器

復(fù)制代碼 代碼如下:

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


將過(guò)濾器綁定為控制器Action

復(fù)制代碼 代碼如下:

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


為路由綁定多個(gè)過(guò)濾器

復(fù)制代碼 代碼如下:

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


指定過(guò)濾器參數(shù)

復(fù)制代碼 代碼如下:

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

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


所有其后的過(guò)濾器將接收到 $response作為第三個(gè)參數(shù):

復(fù)制代碼 代碼如下:

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


基于模式的過(guò)濾器

你也可以指針對(duì)URI為一組路由指定過(guò)濾器。

復(fù)制代碼 代碼如下:

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

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


上述案例中,admin過(guò)濾器將會(huì)應(yīng)用到所有以admin/開(kāi)頭的路由中。星號(hào)是通配符,將會(huì)匹配任意多個(gè)字符的組合。

還可以針對(duì)HTTP動(dòng)作限定模式過(guò)濾器:

復(fù)制代碼 代碼如下:

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


過(guò)濾器類(lèi)

過(guò)濾器的高級(jí)用法中,還可以使用類(lèi)來(lái)替代閉包函數(shù)。由于過(guò)濾器類(lèi)是通過(guò)IoC container實(shí)現(xiàn)解析的,所有,你可以在這些過(guò)濾器中利用依賴(lài)注入(dependency injection)的方法實(shí)現(xiàn)更好的測(cè)試能力。

定義一個(gè)過(guò)濾器類(lèi)

復(fù)制代碼 代碼如下:

class FooFilter {

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

}


注冊(cè)過(guò)濾器類(lèi)

復(fù)制代碼 代碼如下:

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


命名路由

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

復(fù)制代碼 代碼如下:

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


還可以為 controller action指定路由名稱(chēng):

復(fù)制代碼 代碼如下:

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


現(xiàn)在,你可以使用路由名稱(chēng)來(lái)創(chuàng)建URL和重定向:

復(fù)制代碼 代碼如下:

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

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


可以使用currentRouteName方法來(lái)獲取當(dāng)前運(yùn)行的路由名稱(chēng):

復(fù)制代碼 代碼如下:

$name = Route::currentRouteName();


路由組

有時(shí)你可能需要為一組路由應(yīng)用過(guò)濾器。使用路由組就可以避免單獨(dú)為每個(gè)路由指定過(guò)濾器了:

復(fù)制代碼 代碼如下:

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

    Route::get('user/profile', function()
    {
        // Has Auth Filter
    });
});


子域名路由

Laravel中的路由功能還支持通配符子域名,你可以在域名中指定通配符參數(shù):

注冊(cè)子域名路由

復(fù)制代碼 代碼如下:

Route::group(array('domain' => '{account}.myapp.com'), function()
{

    Route::get('user/{id}', function($account, $id)
    {
        //
    });

});


路由前綴

可以通過(guò)prefix屬性為組路由設(shè)置前綴:

為路由組設(shè)置前綴

復(fù)制代碼 代碼如下:

Route::group(array('prefix' => 'admin'), function()
{

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

});


路由與模型綁定

模型綁定,為在路由中注入模型實(shí)例提供了便捷的途徑。例如,你可以向路由中注入匹配用戶(hù)ID的整個(gè)模型實(shí)例,而不是僅僅注入用戶(hù)ID。首先,使用 Route::model 方法指定要被注入的模型:

將參一個(gè)模型

Route::model('user', 'User');
然后,定義一個(gè)包含{user}參數(shù)的路由:

復(fù)制代碼 代碼如下:

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


由于我們已將{user}參數(shù)綁定到了User模型,因此可以向路由中注入一個(gè)User實(shí)例。例如,對(duì)profile/1的訪(fǎng)問(wèn)將會(huì)把ID為1的User實(shí)例注入到路由中。

注意: 如果在數(shù)據(jù)庫(kù)中無(wú)法匹配到對(duì)應(yīng)的模型實(shí)例,404錯(cuò)誤將被拋出。
如果你希望自定義"not found"行為,可以通過(guò)傳遞一個(gè)閉包函數(shù)作為 model 方法的第三個(gè)參數(shù):

復(fù)制代碼 代碼如下:

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


如果你想自己實(shí)現(xiàn)路由參數(shù)的解析,只需使用Route::bind方法即可:

復(fù)制代碼 代碼如下:

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


拋出 404 錯(cuò)誤

有兩種從路由中手動(dòng)觸發(fā)404錯(cuò)誤的方法。首先,你可以使用App::abort方法:

復(fù)制代碼 代碼如下:


App::abort(404);


其次,你可以?huà)伋鯯ymfony\Component\HttpKernel\Exception\NotFoundHttpException異常。

更多關(guān)于處理404異常以及錯(cuò)誤發(fā)生時(shí)自定義response的信息可以查看錯(cuò)誤文檔。

控制器路由

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

“學(xué)習(xí)Laravel路由的方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

網(wǎng)站標(biāo)題:學(xué)習(xí)Laravel路由的方法-創(chuàng)新互聯(lián)
新聞來(lái)源:http://chinadenli.net/article46/dgcoeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司虛擬主機(jī)、關(guān)鍵詞優(yōu)化品牌網(wǎng)站制作、做網(wǎng)站微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司