茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    跟我學(xué)Laravel之路由
    來(lái)源:易賢網(wǎng) 閱讀:8322 次 日期:2014-10-17 14:08:03
    溫馨提示:易賢網(wǎng)小編為您整理了“跟我學(xué)Laravel之路由”,方便廣大網(wǎng)友查閱!

    基本路由

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

    基本 GET 路由

    代碼如下:

    Route::get('/', function()

    {

    return 'Hello World';

    });

    基本 POST 路由

    代碼如下:

    Route::post('foo/bar', function()

    {

    return 'Hello World';

    });

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

    代碼如下:

    Route::any('foo', function()

    {

    return 'Hello World';

    });

    僅支持HTTPS的路由

    代碼如下:

    Route::get('foo', array('https', function()

    {

    return 'Must be over HTTPS';

    }));

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

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

    路由參數(shù)

    代碼如下:

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

    {

    return 'User '.$id;

    });

    可選路由參數(shù)

    代碼如下:

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

    {

    return $name;

    });

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

    代碼如下:

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

    {

    return $name;

    });

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

    代碼如下:

    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ù):

    代碼如下:

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

    {

    //

    })

    ->where(array('id' => '[0-9]+', 'name' => '[a-z]+'))

    定義全局模式

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

    代碼如下:

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

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

    {

    // Only called if {id} is numeric.

    });

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

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

    代碼如下:

    Route::filter('foo', function()

    {

    if (Route::input('id') == 1)

    {

    //

    }

    });

    路由過(guò)濾器

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

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

    代碼如下:

    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ò)濾器

    代碼如下:

    Route::get('user', array('before' => 'old', function()

    {

    return 'You are over 200 years old!';

    }));

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

    代碼如下:

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

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

    代碼如下:

    Route::get('user', array('before' => 'auth|old', function()

    {

    return 'You are authenticated and over 200 years old!';

    }));

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

    代碼如下:

    Route::filter('age', function($route, $request, $value)

    {

    //

    });

    Route::get('user', array('before' => 'age:200', function()

    {

    return 'Hello World';

    }));

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

    代碼如下:

    Route::filter('log', function($route, $request, $response, $value)

    {

    //

    });

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

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

    代碼如下:

    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ò)濾器:

    代碼如下:

    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ò)濾器中利用依賴注入(dependency injection)的方法實(shí)現(xiàn)更好的測(cè)試能力。

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

    代碼如下:

    class FooFilter {

    public function filter()

    {

    // Filter logic...

    }

    }

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

    代碼如下:

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

    命名路由

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

    代碼如下:

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

    {

    //

    }));

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

    代碼如下:

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

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

    代碼如下:

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

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

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

    代碼如下:

    $name = Route::currentRouteName();

    路由組

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

    代碼如下:

    Route::group(array('before' => 'auth'), function()

    {

    Route::get('/', function()

    {

    // Has Auth Filter

    });

    Route::get('user/profile', function()

    {

    // Has Auth Filter

    });

    });

    子域名路由

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

    注冊(cè)子域名路由

    代碼如下:

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

    {

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

    {

    //

    });

    });

    路由前綴

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

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

    代碼如下:

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

    {

    Route::get('user', function()

    {

    //

    });

    });

    路由與模型綁定

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

    將參一個(gè)模型

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

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

    代碼如下:

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

    {

    //

    });

    由于我們已將{user}參數(shù)綁定到了User模型,因此可以向路由中注入一個(gè)User實(shí)例。例如,對(duì)profile/1的訪問(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ù):

    代碼如下:

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

    {

    throw new NotFoundException;

    });

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

    代碼如下:

    Route::bind('user', function($value, $route)

    {

    return User::where('name', $value)->first();

    });

    拋出 404 錯(cuò)誤

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

    代碼如下:

    App::abort(404);

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

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

    控制器路由

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

    更多信息請(qǐng)查看IT技術(shù)專(zhuān)欄

    更多信息請(qǐng)查看腳本欄目
    易賢網(wǎng)手機(jī)網(wǎng)站地址:跟我學(xué)Laravel之路由
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2026上岸·考公考編培訓(xùn)報(bào)班

    • 報(bào)班類(lèi)型
    • 姓名
    • 手機(jī)號(hào)
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
    云南網(wǎng)警備案專(zhuān)用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報(bào)警專(zhuān)用圖標(biāo)