Laravel Route::get 使用 where 条件

jbe*_*rdo 0 routes laravel laravel-5.1

我正在使用 Laravel 5.1,我有以下代码:

//Routes.php
Route::get('/listagem/{campo}','ControllerParque@listar');

//ControllerParque.php
    public function listar($campo) {       
        $listagem = DB::SELECT("SELECT COUNT(x.".$campo.") AS nreg, x.* FROM (SELECT * FROM computadores ORDER BY id DESC) AS x GROUP BY ".$campo." ORDER BY ".$campo." ASC");  
        $dados = array('listagem' => $listagem, 'campo' => $campo);
        return view("ViewListagem")->with($dados);           
    }
Run Code Online (Sandbox Code Playgroud)

我想限制任何与“listagem/usuario”或“listagem/tag”不同的东西。我的意思是,如果用户在您的导航器(网址栏)中输入“listagem/crap”,它将被拒绝,因为它不是“listagem/usuario”或“listagem/tag”。

我试过'where'子句':

Routes.php
    Route::get('/listagem/{campo}','ControllerParque@listar')
->where('campo', 'usuario');
Run Code Online (Sandbox Code Playgroud)

但是这样我只限制了一个条件,这种情况下'listagem/usuario'。

任何的想法?

Jef*_*eff 5

您可以在“where”子句中使用正则表达式。 usario|tag将仅匹配usariotag http://laravel.com/docs/5.0/routing#route-parameters

Route::get('/listagem/{campo}','ControllerParque@listar')
    ->where('campo', 'usuario|tag');
Run Code Online (Sandbox Code Playgroud)