2015-09-27 4 views
4

Как установить путь перенаправления после отправки ссылки на сброс пароля?Перенаправление после отправки ссылки на сброс пароля в Laravel 5.1?

В ResetsPaswords черта этот код:

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

Но я не хочу, чтобы изменить файлы поставщика. Есть ли другой способ?

ответ

3

Как вы можете видеть в коде признака успешного результата перенаправляет назад к тому же маршруту:

redirect()->back()->with('status', trans($response)); 

Пожалуйста, обратите внимание на status переменную в методе with(). Это устанавливает временную переменную сеанса, которую вы затем можете использовать внутри своего шаблона просмотра, например. уведомить пользователя о том, что письмо успешно установлено.

@if (session('status')) 

// ... notification that the email has been sent 

@else 

// ... your original form for submitting an email address 

@endif 

Дело в том, что, как правило, нет необходимости перенаправлять на другой маршрут, чтобы сообщить пользователю, что сообщение отправлено. Вы можете использовать один и тот же маршрут с одним и тем же видом и создать два блока кода в представлении. Тот, который генерирует форму для отправки адреса электронной почты, другой, который генерирует уведомление об успешном завершении.

+2

Не знаете, почему это принятый ответ. Это не дает решения. –

12

Вы можете сделать это, добавив protected $redirectTo = '/dashboard'; к вашему PasswordController.

Таким образом, ваш контроллер будет выглядеть следующим образом:

<?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; 

    protected $redirectTo = '/dashboard'; 

    //The rest of the controller below this... 

И вы можете настроить маршрут, изменив /dashboard туда, где вы хотите, чтобы перенаправить их.

Для получения дополнительной информации вы должны указать docs.

+4

Это редирект после сброса пароля, вопрос заключается в том, чтобы перенаправить после отправки ссылки активации (после вставки сообщения) ... –

0

Вам не нужно редактировать файлы поставщиков. Просто откройте /app/Http/Controllers/Auth/PasswordController.php и добавьте следующую строку кода в классе PasswordController

protected $redirectPath = '/DesiredUrl'; 

Испытано на Laravel 5.1

+0

Это изменяет перенаправление после щелчка по ссылке сброса, и пользователь меняет свой пароль. Вопрос задает вопрос о том, как изменить перенаправление после сброса ссылки SENT. –

+0

@Trevor Gehman, хорошо и что вы предлагаете? –

+0

См. Мой ответ выше: http: // stackoverflow.com/a/35784765/1269365 –

1

Вы заметите в ResetsPasswords черты следующие две функции: : getSendResetLinkEmailSuccessResponse и getSendResetLinkEmailFailureResponse, которые обрабатывают перенаправление после отправки пароля для сброса пароля, в зависимости от того, было ли отправлено сообщение об ошибке сброса или нет.

Причиной изменения является то, что (как и в моем случае) вы хотите вернуть пользователя на главный экран входа после отправки ссылки на сброс пароля.

Чтобы сделать это, просто изменить App\Http\Controllers\Auth\PasswordController и переопределить функцию, например, так:

protected function getSendResetLinkEmailSuccessResponse($response) 
{ 
    return redirect()->route('login')->with('status', trans($response)); 
} 
+1

Я добавил этот код, но он ничего не делает ... –

+0

Я предполагаю, что вы используете PasswordController, который создает Laravel с помощью команды 'make: auth'? И что он использует свойство «ResetsPassword»? Какую версию Laravel вы используете? –

+0

Я использую Laravel 5.1 (см. Заголовок), но я не помню, используя команду 'make :: auth' –

Смежные вопросы