【问题标题】:Laravel 4 Controller Route - Get Route with Numerical Parameters and Other Specific ParametersLaravel 4 控制器路由 - 获取带有数字参数和其他特定参数的路由
【发布时间】:2014-12-10 16:32:22
【问题描述】:

寻找对此的一些见解。

我正在尝试在 Laravel 4 应用程序中定义一个路由控制器,它执行以下操作。

  • 处理路由user/{userid}
  • 处理路由user/new

我想不出办法让两者同时发生。

我的控制器和路由如下所示:

Route::controller('user', 'UserController');

class UserController extends BaseController {

    public function getIndex($user_id) {
        $user = User::find($user_id);
        return View::make('user')
            ->with('user', $user);
    }

    public function getNew() {
        return View::make('create_user');
    }
}

对我来说,这应该可行,但我在尝试转到 user/1 时收到 404。奇怪的是,user/new 仍将我带到create_useruser.blade.php 视图和create_user.blade.php 视图都存在于views 的根目录中,所以这也不是问题所在。我做错了什么?

【问题讨论】:

    标签: php laravel-4 controller routes


    【解决方案1】:

    您可以在路由中执行以下操作,而不是 Route::controller('user', 'UserController');

    Route::get('user/new', 'UserController@getNew');
    Route::get('user/{user_id}', 'UserController@getIndex');
    

    或者您也可以执行以下操作:

    Route::get('user/{user_id}', 'UserController@getIndex');
    Route::controller('user', 'UserController');
    

    【讨论】:

    • 有没有办法在控制器中做到这一切?我知道它微不足道,但我试图保持它的一致和整洁。其他一切都通过控制器运行。
    • 我不知道Route::controller是否可以完全完成,但我添加了另一种使用Route::controller的方式。
    • 当我使用第二种方法转到user/new 时,它会将“新”传递给UserController@getIndex。通过添加您的第二个答案,我能够为我的目的找到解决方法。我在get 路由的末尾添加了->where('id', '[0-9]+');,它适用于两者! :)
    猜你喜欢
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 2014-08-24
    • 2013-11-24
    • 1970-01-01
    • 2016-10-21
    相关资源
    最近更新 更多