Laravel Routes和'Class @ Method'表示法 - 如何将URL中的参数传递给方法

时间:2017-02-14 14:53:32

标签: laravel routes

我是Laravel的新手所以不确定这个符号。 Laravel文档显示您可以通过这种方式传递参数:

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

这非常直观。以下是我正在进行的项目中的一些现有编码,可在routes.php中找到:

Route::get('geolocate', 'Api\CountriesController@geolocate');
# which of course will call geolocate() in that class

以下是我想将变量传递给的代码:

Route::get('feed/{identifier}', 'Api\FeedController@feed');

问题是,如何将$identifier传递给班级:

feed($identifier)

谢谢!

另外还有一个问题,我如何评论{identifier}以便它是可选的,即只是/feed/会匹配这条路线?

1 个答案:

答案 0 :(得分:1)

您应首先创建一个如下所示的链接:

/feed/123

然后,在您的控制器中,该方法将如下所示:

feed($identifier)
{
    // Do something with $identifier
}

Laravel非常聪明,可以将路由器参数映射到控制器方法参数,这很不错!

或者,您可以使用Request对象返回identifier值,如下所示:

feed()
{
    Request::get('identifier');
}

这两种方法都有其优点,我个人使用第一个例子来获取一个或两个路由器参数,第二个例子用于我需要做更复杂的事情。