2016-06-10 27 views
1

我无法重写Controller类中特征的方法。这里是我的特质方法的一个例子:覆盖Laravel控制器中的特征方法

protected function resetPassword($user, $password) 
{ 
    $user->password = bcrypt($password); 

    $user->save(); 

    Auth::login($user); 
} 

这里是我的控制器:

namespace App\Http\Controllers\Auth; 

use App\Http\Controllers\Controller; 

use Illuminate\Foundation\Auth\ResetsPasswords; 


class PasswordController extends Controller 
{ 
    use ResetsPasswords { 
     resetPassword as newReset; 
    } 

    /** 
    * Create a new password controller instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     $this->middleware('guest'); 
    } 

    protected function resetPassword($user, $password) 
    { 

    } 
} 

我找到了一个例子,但我不知道,我是在一个正确的方式。

+0

不,但特质中的方法正在工作..我需要在我的控制器中重写它。 –

+1

[父类的特征的PHP重写特征方法]的可能重复(http://stackoverflow.com/questions/36431292/php-override-trait-method-of-parent-classs-trait) –

回答

0

正如你自己已经完成了,你需要的别名框架特质的resetPassword方法,然后实现自己的:

namespace App\Http\Controllers\Auth; 

use Auth; 
use App\Http\Controllers\Controller; 
use Illuminate\Foundation\Auth\ResetsPasswords; 

class PasswordController extends Controller 
{ 
    use ResetsPasswords { 
     resetPassword as frameworkResetPassword; 
    } 

    protected function resetPassword($user, $password) 
    { 
     // Do your custom password reset logic here 
     $user->password = bcrypt($password); 
     $user->save(); 
     Auth::login($user); 

     // Then you can pass the work over to framework's implementation 
     // if that's needed. 
     // $this->frameworkResetPassword($user, $password); 
    } 
} 

顺便说一句,Laravel自身password reset functionality支持登录用户