2016-04-25 215 views
0

在laravel 5我嘗試PasswordController和ResetsPasswords但始終我有一個路線problemelaravel 5 PasswordController路線

Route.php

Route::controllers(['uses' => 'Auth/PasswordController']); 

Route::get('home/ResetsPasswords',array('as'=>'getEmail' ,'uses' => 'home/[email protected]')); 

Route::post('home/ResetsPasswords',array('as'=>'postEmail' ,'uses' => 'home/[email protected]')); 

Route::get('home/ResetsPasswords/{token}',array('as' => 'getReset','uses' => 'home/[email protected]')); 

Route::post('home/ResetsPasswords/{token}', array( 'as' => 'postReset','uses' => 'home/[email protected]')); 

Route::get('home/ResetsPasswords',array('as'=>'getEmailSubject' ,'uses' => 'home/[email protected]')); 

Route::get('home/ResetsPasswords',array('as'=>'redirectPath' ,'uses' => 'home/[email protected]')); 

的PasswordController.php

<?php 

namespace App\Http\Controllers\Auth; 

use App\Http\Controllers\Controller; 
use Illuminate\Foundation\Auth\ResetsPasswords; 
class PasswordController extends Controller 
{ 


    use ResetsPasswords; 


    public function __construct() 
    { 
     $this->middleware('guest'); 
    } 
} 

的ResetsPasswords.php

<?php 

namespace App\Http\Controllers\Auth; 

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

class PasswordController extends Controller 
{ 
    /* 
    |-------------------------------------------------------------------------- 
    | Password Reset Controller 
    |-------------------------------------------------------------------------- 
    | 
    | This controller is responsible for handling password reset requests 
    | and uses a simple trait to include this behavior. You're free to 
    | explore this trait and override any methods you wish to tweak. 
    | 
    */ 

    use ResetsPasswords; 

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

<?php 

namespace App\Http\Controllers\Auth; 

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

class PasswordController extends Controller 
{ 
    /* 
    |-------------------------------------------------------------------------- 
    | Password Reset Controller 
    |-------------------------------------------------------------------------- 
    | 
    | This controller is responsible for handling password reset requests 
    | and uses a simple trait to include this behavior. You're free to 
    | explore this trait and override any methods you wish to tweak. 
    | 
    */ 

    use ResetsPasswords; 

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


ResetsPasswords.php 

     <?php 

    //namespace Illuminate\Foundation\Auth; 

    use Illuminate\Http\Request; 
    use Illuminate\Mail\Message; 
    use Illuminate\Support\Facades\Auth; 
    use Illuminate\Support\Facades\Password; 
    use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; 

    trait ResetsPasswords 
    { 
     /** 
     * Display the form to request a password reset link. 
     * 
     * @return \Illuminate\Http\Response 
     */ 
     public function getEmail() 
     { 
      return view('auth.password'); 
     } 

     /** 
     * Send a reset link to the given user. 
     * 
     * @param \Illuminate\Http\Request $request 
     * @return \Illuminate\Http\Response 
     */ 
     public function postEmail(Request $request) 
     { 
      $this->validate($request, ['email' => 'required|email']); 

      $response = Password::sendResetLink($request->only('email'), function (Message $message) { 
       $message->subject($this->getEmailSubject()); 

      }); 

      switch ($response) { 
       case Password::RESET_LINK_SENT: 
        return redirect()->back()->with('status', trans($response)); 

       case Password::INVALID_USER: 
        return redirect()->back()->withErrors(['email' => trans($response)]); 
      } 
     } 

     /** 
     * Get the e-mail subject line to be used for the reset link email. 
     * 
     * @return string 
     */ 
     protected function getEmailSubject() 
     { 
      return isset($this->subject) ? $this->subject : 'Your Password Reset Link'; 
     } 

     /** 
     * Display the password reset view for the given token. 
     * 
     * @param string $token 
     * @return \Illuminate\Http\Response 
     */ 
     public function getReset($token = null) 
     { 
      if (is_null($token)) { 
       throw new NotFoundHttpException; 
      } 

      return view('auth.reset')->with('token', $token); 
     } 

     /** 
     * Reset the given user's password. 
     * 
     * @param \Illuminate\Http\Request $request 
     * @return \Illuminate\Http\Response 
     */ 
     public function postReset(Request $request) 
     { 
      $this->validate($request, [ 
       'token' => 'required', 
       'email' => 'required|email', 
       'password' => 'required|confirmed', 
      ]); 

      $credentials = $request->only(
       'email', 'password', 'password_confirmation', 'token' 
      ); 

      $response = Password::reset($credentials, function ($user, $password) { 
       $this->resetPassword($user, $password); 
      }); 

      switch ($response) { 
       case Password::PASSWORD_RESET: 
        return redirect($this->redirectPath()); 

       default: 
        return redirect()->back() 
           ->withInput($request->only('email')) 
           ->withErrors(['email' => trans($response)]); 
      } 
     } 

     /** 
     * Reset the given user's password. 
     * 
     * @param \Illuminate\Contracts\Auth\CanResetPassword $user 
     * @param string $password 
     * @return void 
     */ 
     protected function resetPassword($user, $password) 
     { 
      $user->password = bcrypt($password); 

      $user->save(); 

      Auth::login($user); 
     } 

     /** 
     * Get the post register/login redirect path. 
     * 
     * @return string 
     */ 
     public function redirectPath() 
     { 
      if (property_exists($this, 'redirectPath')) { 
       return $this->redirectPath; 
      } 

      return property_exists($this, 'redirectTo') ? $this->redirectTo : '/home'; 
     } 
    } 

和用於視圖 第一個中的電子郵件/ password.blade.php

<?php 
Click here to reset your password: {{ url('password/reset/'.$token) }} 
?> 

在auth/password.blade.php

@extends('layouts.master') 

@section('content') 

<div class="container-fluid"> 
<div class="row"> 
<div class="col-md-8 col-md-offset-2"> 
<div class="panel panel-default"> 
<div class="panel-heading">Reset Password</div> 
<div class="panel-body"> 
    @if (session('status')) 
     <div class="alert alert-success"> 
      {{ session('status') }} 
     </div> 
    @endif 

    @if (count($errors) > 0) 
     <div class="alert alert-danger"> 
     <strong>Whoops!</strong> There were some problems with your input.<br><br> 
     <ul> 
      @foreach ($errors->all() as $error) 
        <li>{{ $error }}</li> 
      @endforeach 
     </ul> 
     </div> 
     @endif 

<form class="form-horizontal" role="form" method="POST" action="/password/email"> 
<input type="hidden" name="_token" value="{{ csrf_token() }}"> 

<div class="form-group"> 
<label class="col-md-4 control-label">E-Mail Address</label> 
<div class="col-md-6"> 
<input type="email" class="form-control" name="email" value="{{ old('email') }}"> 
</div> 
</div> 

<div class="form-group"> 
<div class="col-md-6 col-md-offset-4"> 
<button type="submit" class="btn btn-primary"> 
     Send Password Reset Link 
</button> 
</div> 
</div> 
</form> 

</div> 
</div> 
</div> 
</div> 
</div> 

@endsection 

的reset.blade.php

@extends('layouts.master') 

@section('content') 

<div class="container-fluid"> 
<div class="row"> 
<div class="col-md-8 col-md-offset-2"> 
<div class="panel panel-default"> 
<div class="panel-heading">Reset Password</div> 
<div class="panel-body"> 

@if (count($errors) > 0) 
    <div class="alert alert-danger"> 
    <strong>Whoops!</strong> There were some problems with your input.<br><br> 
    <ul> 
     @foreach ($errors->all() as $error) 
       <li>{{ $error }}</li> 
     @endforeach 
     </ul> 
     </div> 
@endif 

<form class="form-horizontal" role="form" method="POST" action="/password/reset"> 
<input type="hidden" name="_token" value="{{ csrf_token() }}"> 
<input type="hidden" name="token" value="{{ $token }}"> 

<div class="form-group"> 
<label class="col-md-4 control-label">E-Mail Address</label> 
<div class="col-md-6"> 
<input type="email" class="form-control" name="email" value="{{ old('email') }}"> 
</div> 
</div> 

<div class="form-group"> 
<label class="col-md-4 control-label">Password</label> 
<div class="col-md-6"> 
<input type="password" class="form-control" name="password"> 
</div> 
</div> 

<div class="form-group"> 
<label class="col-md-4 control-label">Confirm Password</label> 
<div class="col-md-6"> 
<input type="password" class="form-control" name="password_confirmation"> 
</div> 
    </div> 

<div class="form-group"> 
<div class="col-md-6 col-md-offset-4"> 
<button type="submit" class="btn btn-primary"> 
      Reset Password 
</button> 
</div> 
</div> 
</form> 

</div> 
</div> 
</div> 
</div> 
</div> 

@endsection 

最後我的登錄查看

<a href="{{action("[email protected]")}}">Mot de passe oublié?</a> 

因此錯誤是

調用未定義的方法Laravel \路徑\路徑::控制器()

可以請你幫我:/我試圖改變路線很多時間,但總是同樣的問題! !!!!!!
謝謝

回答

0

這是laravel 5

Route::controllers([ 
    'auth' => 'Auth\AuthController', 
    'password' => 'Auth\PasswordController', 
]); 

這用於laravel 5.2

Route::group(['middleware' => ['web']], function() { 
    Route::controllers([ 
     'auth' => 'Auth\AuthController', 
     'password' => 'Auth\PasswordController', 
    ]); 
}); 
+0

相同的消息也當我改變它 ' 路線::控制器([ 'AUTH'=>「驗證\金thController」, '密碼'=> '驗證\ PasswordController', ]);' 調用未定義的方法Laravel \路徑\路徑::控制器() – sabrine

0

我認爲你正在使用的routes.php文件

use Illuminate\Routing\Route; 

Route::controllers([ 
    'auth' => 'Auth\AuthController', 
    'password' => 'Auth\PasswordController', 
]); 

如果您使用此,則錯誤出現。 調用未定義的方法照亮\路徑\路徑::控制器()

避免這種錯誤使用本

use Illuminate\Support\Facades\Route; 


Route::controllers([ 
    'auth' => 'Auth\AuthController', 
    'password' => 'Auth\PasswordController', 
]); 

注:不需要進口什麼路線 把它作爲 下面的一個也適用

Route::controllers([ 
     'auth' => 'Auth\AuthController', 
     'password' => 'Auth\PasswordController', 
    ]); 
+0

我沒有在路線 輸入任何東西我嘗試用照亮\支持\外立面\路線; 同樣的錯誤信息 – sabrine

+0

發送跟蹤錯誤 –

+0

您正在使用哪個版本的laravel? laravel 5或5.1或5.2 –