2016-06-10 28 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支持登錄用戶