簡體   English   中英

Laravel使用命名路線

[英]Laravel using named routes

關於命名路由的使用,這2行允許我訪問同一頁面,這是正確的嗎?

// Named route
Route::get('test/apples', array('as'=>'apples', 'uses'=>'TestController@getApples'));

// Much simpler
Route::get('apples', 'TestController@getApples');

如果后者更短並且更不容易出錯,我是否應該使用命名路由?

命名路線比較好,為什么?

使用named route總是更好,因為使用url可以使用name來引用路由,例如:

return Redirect::to('an/url');

現在上面的代碼將工作,但如果您將使用此:

return Redirect::route('routename');

然后它會動態生成url ,如果你甚至更改了url你的代碼就不會被破壞。 例如,檢查您的route

Route::get('apples', 'TestController@getApples');
Route::get('apples', array('as' => 'apples.show', 'uses' => 'TestController@getApples'));

兩條路線都相同,但沒有name因此要使用沒有名稱的路線,您必須依賴於url ,例如:

return Redirect::to('apples');

但是如果你的路線包含一個名字,你可以使用路線名稱做同樣的事情,例如:

return Redirect::route('apples.show');

在這種情況下,您可以將urlapples更改為somethingelse但仍然可以在不更改代碼的情況下使用Redirect

唯一的好處是它更容易鏈接,您可以更改URL而無需通過並更改其所有引用。 例如,使用命名路由,您可以執行以下操作:

URL::route('apples');
Redirect::route('apples');
Form::open(array('route' => 'apples'));

然后,如果您更新路線,您的所有網址都會更新:

// from
Route::get('test/apples', array('as'=>'apples', 'uses'=>'TestController@getApples'));

// to
Route::get('new/apples', array('as'=>'apples', 'uses'=>'TestController@getApples'));

另一個好處是邏輯上創建一個包含很多參數的URL。 這使您可以通過URL生成更加動態,例如:

Route::get('search/{category}/{query}', array(
    'as' => 'search',
    'uses' => 'SearchController@find',
));

$parameters = array(
    'category' => 'articles',
    'query' => 'apples',
);

echo URL::route('search', $parameters);
// http://domain.com/search/articles/apples

命名路線的唯一原因是您以后需要引用它。 IE:從視圖中的頁面或其他內容,檢查您是否在該路徑中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM