【问题标题】:Laravel Route::get using where conditionsLaravel Route::get 使用 where 条件
【发布时间】:2015-12-21 20:48:03
【问题描述】:

我正在开发 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”。

有什么想法吗?

【问题讨论】:

    标签: laravel routes laravel-5.1


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我不确定是否可以通过 where 完成。相反,您可以在控制器函数中检查它。

      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
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-01
        • 2021-07-12
        • 1970-01-01
        • 2013-12-25
        • 2021-08-30
        • 2020-03-12
        • 2021-04-23
        • 2021-10-13
        相关资源
        最近更新 更多