我正在尝试通过url传递用户名。
site.tld/{username}/account所以我在我的路线中有这个条目
Route::group(array('prefix' => '{username}'), function($username)
{
$user = User::whereUsername($username)->first();
if(!is_null($user))
{
Route::get('portfolio', 'PortfolioController@getIndex');
Route::get('profile', 'ProfileController@getIndex');
....
}
}我得到以下错误。
Object of class Illuminate\Routing\Router could not be converted to string我做错了什么?
发布于 2014-03-26 07:34:52
Route::group()的工作方式与Route::method()不同,闭包是在路由列表过程中执行的,传递给它的是路由器,而不是您的参数:
Route::group(array('prefix' => '{username}'), function($router) { ... });所以你基本上是在做:
$user = User::whereUsername($router)->first();这就是为什么它说
Object of class Illuminate\Routing\Router could not be converted to string但您可以使用过滤器:
Route::filter('age', function($route, $request)
{
if (! User::whereUsername($route->parameter('username'))->first())
{
App::abort(404);
}
});
Route::group(array('prefix' => '{username}', 'before' => 'age'), function($username)
{
Route::get('portfolio', 'PortfolioController@getIndex');
Route::get('profile', 'ProfileController@getIndex');
});https://stackoverflow.com/questions/22648094
复制相似问题