控制器内的多个正则表达式而不是具有单个正则表达式的多个路径

时间:2017-03-02 13:07:55

标签: regex laravel laravel-5 routes

我跑Laravel 5.4。

我有这些路线:

<?php
    Route::get('/users/{name}', 'UsersController@showByText')->where('name', '[\w]+');
    Route::get('/users/{id}', 'UsersController@showById')->where('id', '[\d]+');
?>

我的控制员:

<?php
    namespace App\Http\Controllers;

    use Illuminate\Http\Request;

    class DashboardController extends Controller
    {

        function showByText($name)
        {
            return DB::table('users')->where('name', 'LIKE', $name)->get();
        }

        function showById($id)
        {
            return DB::table('users')->where('id', $id)->get();
        }
    }
?>

问题:

我能否以一种方法结束:

<?php
    Route::get('/users/{mixed}', 'UsersController@show');
?>

我的控制器看起来像:

<?php
    namespace App\Http\Controllers;

    use Illuminate\Http\Request;

    class DashboardController extends Controller
    {
        function show()
        {
            if( Request::match('mixed', '[\w]+') )
            {
                return DB::table('users')->where('name', 'LIKE', $mixed)->get();
            }
            else if( Request::match('mixed', '[\d]+') )
            {
                return DB::table('users')->where('id', $mixed)->get();
            }
        }
    }
?>

我知道Request::match()不存在,并且知道Route::pattern('id', '[\d]+');会强制我的方法show仅符合数字。我想知道preg_match()组件是否有Request的简写。

0 个答案:

没有答案