繁体   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