2016-02-20 19 views
7

Sử dụng Laravel 5.2Làm cách nào để ghi đè/thêm vào Nhà môi giới mật khẩu trong Laravel?

Tôi cần ghi đè lên một vài chức năng/thêm một số nội dung mới vào quá trình đặt lại mật khẩu. Tôi biết rằng tôi có thể ghi đè lên chức năng trong Illuminate\Foundation\Auth\ResetsPasswords bằng Bộ điều khiển Mật khẩu xuất phát từ tin nhắn.

Tôi cũng cần thực hiện thay đổi trong Illuminate\Contracts\Auth\PasswordBroker. Mục tiêu của tôi là có email lời mời để đặt mật khẩu ban đầu sử dụng chức năng đặt lại mật khẩu hiện có. Vấn đề duy nhất là trong hàm sendResetLink.

Chức năng này nhận mã thông báo mật khẩu và gửi email thông qua chế độ xem email đặt lại mật khẩu. Tôi vẫn cần có chức năng đặt lại mật khẩu, nhưng tôi không thể có email lời mời với cụm từ 'đặt lại mật khẩu' của bạn.

Tôi làm cách nào để thực hiện việc này? Tôi nghĩ rằng tôi có thể sao chép và tinh chỉnh các chức năng trên các lớp thiết lập lại để sử dụng một cái nhìn mời cho email, nhưng tôi không thể tìm ra cách để mở rộng lớp môi giới để thực hiện công việc này.

Trả lời

2

Tôi đã vật lộn với điều tương tự. Tôi đã thêm một phương thức setEmailView() vào PasswordBroker tùy chỉnh của mình và gọi nó ngay trước khi gửi liên kết đặt lại trong AuthController, nhưng điều đó đã phá vỡ chức năng đặt lại mật khẩu thông thường.
Vì vậy, tôi đã loại bỏ tất cả những điều đó và đi theo một cách tiếp cận đơn giản hơn nhiều. Trong AuthController.php, đưa một biến vào mẫu mật khẩu.

view()->composer('auth.emails.password', function($view) { 
    $view->with(['register'=>true]); 
}); 
Password::sendResetLink(['email'=>$data['email']], function($message) { 
    $message->subject('Registration Email'); 
}); 

Sau đó, trong mẫu auth/email/password.blade.php

@if (isset($register)) 
    Whatever you want to say in registration Email. 
@else 
    Normal password reset Email here. 
@endif 
+0

Bạn lưu ngày của tôi. –

Các vấn đề liên quan