2016-09-07 108 views
1

我正在使用Laravel 5.2并尝试使用其控制器进行密码更改。我已经添加了以下路线:RouteException中的ReflectionException类App Http Controllers PasswordController不存在

Route::get('changepassword', array('as' => 'reset.password', 'uses' => '[email protected]')); 
Route::post('resetpasswordcomplete', array('as' => 'reset.password.complete', 'uses' => '[email protected]')); 

Http\Controllers\Auth\PasswordController有以下方法:

public function edit() { 
    return View::make('auth/passwords/change'); 
} 

public function update() { 
    $hasher = Sentinel::getHasher(); 

    $oldPassword = Input::get('old_password'); 
    $password = Input::get('password'); 
    $passwordConf = Input::get('password_confirmation'); 

    $user = Sentinel::getUser(); 

    if (!$hasher->check($oldPassword, $user->password) || $password != $passwordConf) { 
     Session::flash('error', 'Check input is correct.'); 
     return View::make('auth/passwords/change'); 
    } 

    Sentinel::update($user, array('password' => $password)); 

    return Redirect::to('/'); 
} 

的看法是这样的:

@if (Session::get('error')) 
    <div class="alert alert-error"> 
     {{ Session::get('error') }} 
    </div> 
@endif 

{{ Form::open(array('route' => array('reset.password.complete'))) }} 
{{ Form::password('old_password', array('placeholder'=>'current password', 'required'=>'required')) }} 
{{ Form::password('password', array('placeholder'=>'new password', 'required'=>'required')) }} 
{{ Form::password('password_confirmation', array('placeholder'=>'new password confirmation', 'required'=>'required')) }} 
{{ Form::submit('Reset Password', array('class' => 'btn')) }} 
{{ Form::close() }} 

我得到的ReflectionException错误,因为我觉得PasswordController位于Auth文件夹内部,因此只有想要使用auth脚手架重置遗忘密码的访客才能访问。我想知道如何让登录的用户访问此控制器,以便他们可以在需要时更改密码?

编辑:我想这样做后阿列克西的解决方案如下: 公共职能__construct()

{ 
    $this->middleware('guest', ['except' => ['resetpasswordcomplete', 'changepassword']]); 
} 

它仍然使我回到主页。

回答

1

变化控制器路径routes.php到:

Route::get('changepassword', array('as' => 'reset.password', 'uses' => 'Auth\[email protected]')); 
Route::post('resetpasswordcomplete', array('as' => 'reset.password.complete', 'uses' => 'Auth\[email protected]')); 
+0

现在让我回到主页 – omrakhur

相关问题