我正在使用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);
}
我想限制'listagem / usuario'或'listagem / tag'的任何不同内容。我的意思是,如果用户在导航器(URL栏)中输入“listagem / crap”,它将被拒绝,因为它不是'listagem / usuario'或'listagem / tag'。
我试过'where'子句':
Routes.php
Route::get('/listagem/{campo}','ControllerParque@listar')
->where('campo', 'usuario');
但是这样我只限制了一个条件,这个案例'listagem / usuario'。
有什么想法吗?
答案 0 :(得分:3)
您可以在"中使用正则表达式"条款。 usario|tag
仅匹配usario
或tag
http://laravel.com/docs/5.0/routing#route-parameters
Route::get('/listagem/{campo}','ControllerParque@listar')
->where('campo', 'usuario|tag');
答案 1 :(得分:0)
我不确定是否可以通过哪里完成。相反,您可以在控制器功能中检查它。
public function listar($campo) {
if(!in_array($campo,['usuario','tag'])) {
// throw an error, return to previous page
return Redirect::back()->withErrors('error message here');
}
// Continue on with your function
}