Php 调用未定义的方法-Laravel

Php 调用未定义的方法-Laravel,php,laravel,Php,Laravel,我是Laravel的新手,我正在使用Laravel 4,我正在尝试创建一个用户控制器,如下所示: class UserController extends BaseController { public function getIndex (){ } public function showProfile($id){ echo "$id"; View::make('user.profile'); } public

我是Laravel的新手,我正在使用Laravel 4,我正在尝试创建一个用户控制器,如下所示:

class UserController extends BaseController {

    public function getIndex (){
    }

    public function showProfile($id){

        echo "$id";

        View::make('user.profile');
    }


    public function getNew(){
    }

    public function postNew(){

    }

    public function getLogin(){
    }
在我要使用的路线中: 路由::控制器('user','UserController')

它与所有expect(showProfile)一起工作正常,例如当我转到../user/profile/2时 我得到了对未定义方法的调用

注意: 我可以用

Route::get('user', 'UserController@getIndex');
Route::get('user/new', 'UserController@getNew');
Route::post('user/new', 'UserController@postNew');
Route::get('user/login', 'UserController@getLogin');
Route::get('user/{id}', 'UserController@showProfile');

这会很好,但我不认为这是一个好的实践

你没有为之定义路线

 ../user/profile/2
你有没有试过这样的方法:

Route::get('user/profile/{id}', 'UserController@showProfile');

是的,我尝试了它,但是它覆盖了所有其他方法,比如user/login,但是我添加了一些东西,使它能够工作Route::get('user/{id}','UserController@showProfile')->其中('id','[0-9]+');所以它不会覆盖其他方法,但这仍然不理想,如果我想传递{username}而不是{id},那么我不能使用where('id','[0-9]+');
user/profile/{id}
如何覆盖其他路由?其他路由中不包含“profile”是的,很抱歉它与e/user/profile/{id}或{username}一起工作,但实际上我正在寻找类似../user/{username}或更像Facebook../{username}的内容。在这种情况下,您需要使用路由筛选器来检查$username是否是存储在数据库中的实际用户名。