0

当您只想接受路由的特定参数时,请执行以下操作:

Route::get('users/{id}', 'UsersController@show')->where('id', '\d+');

但是如果我想要类似的东西怎么办:

Route::get('users/{id}', 'UsersController@show')->where('id', '\d+')->where(this id exists in table column id);

laravel 怎么可能呢?
如果 db 中尚不存在 id,我想返回未找到的页面。


更新

我有一个想法来创建一个过滤器:

Route::filter('user.exists', function()
{
//get the id then check the database
});

但是如何将 $id 传递给过滤器?


笔记

我知道我可以做一些事情,比如检查查询是否在控制器中返回了任何数据,如果现在像这样,则抛出 404:

$user = User::find($id);

if(!$user){
    App::abort(404);
}

但我认为如果我能在路线本身做到这一点会更干净。因为我要过滤的不仅仅是用户。

4

1 回答 1

1

这应该可以帮助您入门:

Route::get('users/{id}', 'UsersController@show', array('before' => 'userExists'))->where('id', '[\d]+');

Route::filter('userExists', function($id) {
  echo $id; exit;
});
于 2013-05-31T19:20:38.783 回答