2015-08-03 3 views
2

Я пытаюсь использовать встроенный сброс пароля Laravel в моем приложении, где Laravel 5.1 действует как backend api и Angular 1.3 для всех интерфейсных просмотров. сброс пароля Я настройки согласно docs, где я сделал следующее:Laravel 5 Password Reset with Angular View

1) Создайте таблицу

php artisan migrate 

2) Добавлен это маршрут:

Route::post('password/email', 'Auth/[email protected]'); 
    Route::post('password/reset', 'Auth/[email protected]'); 

Поскольку я буду использовать Angular для отображения форм frontend, я не добавил представления для GET. Я не делал никаких изменений в Auth/PasswordController.php и прямо сейчас так же, как и он. Но когда я проверить выше URL из Почтальон POST запрос, я получаю сообщение об ошибке:

View [emails.password] not found.

Как я могу позволить Угловая Handle взгляды и не Laravel беспокоиться о представлении? Должен ли я иметь Laravel View для встроенного сброса пароля для работы? Как я к этому подхожу?

ответ

3

Переопределите методы postEmail и postReset, чтобы они возвращали ответ JSON (не позволяйте ему перенаправлять). Впоследствии опубликуйте до /password/email и /password/reset от углового через xhr.

+0

Спасибо Harmen. Можете ли вы рассказать мне, где я могу найти методы postEmail и postReset по умолчанию, чтобы расширить его? Я вижу только метод '__construct' внутри' PasswordController.php' по умолчанию. Кроме того, с ошибкой 'View [emails.password] not found', которую я получал, мне было интересно, не говорит ли laravel, что он не может найти страницу просмотра формы или представление для отправки шаблона электронной почты напоминания? – Neel

+1

Привет, Нил, это на самом деле черта (см. Https://github.com/laravel/framework/blob/5.0/src/Illuminate/Foundation/Auth/ResetsPasswords.php), поэтому методы, по-видимому, не находятся в PasswordController. Однако вы можете просто добавить их, и они переопределяют методы признаков. Итак, скопируйте методы из признака в контроллер и измените переадресацию на ответы – Harmen

+0

загляните в приложение/Http/Controllers/Auth/PasswordController.php – Digitlimit

3

Открыть app/Http/Controllers/Auth/PasswordController.php

<?php namespace App\Http\Controllers\Auth; 

use App\Http\Controllers\Controller; 

class PasswordController extends Controller 
{ 

use ResetsPasswords; 


//add and modify this methods as you wish: 


/** 
* 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)]); 
    } 
} 



/** 
* 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)]); 
    } 
} 

} 
0

Ceckout свой путь к папке в видом приложения \ бутстраповской \ кэш \ config.php в разделе "Вид"

'view' => 
    array (
    'paths' => 
    array (
     0 => '/home/vagrant/Code/app/resources/views', 
    ), 
    'compiled' => '/home/vagrant/Code/app/storage/framework/views', 
), 

этот путь должен быть на сервере! а не у вас локальная машина вроде «D: \ WebServers \ home \ Laravel \ app \ bootstrap \ cache», если вы используете усадьбу. И вы должны использовать команду: «php artisan config: clear | cache» на сервере SERVER!

0

У меня была такая же проблема, как и у вас. Вы можете изменить вид в config/auth.php, если у вас есть другой, не имеющий ресурсов/представлений/emails/password.blade.php.

Потому что это представление создано не по умолчанию, поэтому вы получили ошибку.