プログラミング初心者です。
laravel5.4 パスワード再設定のメールのリンク先にてリクエストしたメールアドレスを取得したいと思っています。
行った内容では$emailがNULLになってしまい表示ができていません。
原因または解決策をご存知の方はいらっしゃいませんでしょうか。
私の行った手順は以下です。
####(1) php artisan make:auth
をし、php artisan migrateを実行。
####(2)作成された /app/Http/Controllers/Auth/ResetPasswordController
のtrait先である /vendor/laravel/framework/src/Illuminate/Foundation/Auth/ResetsPasswords
のshowResetFormメソッドを確認し、emailとtokenを取得しているかを確認する
php
1public function showResetForm(Request $request, $token = null) 2{ 3 return view('auth.passwords.reset')->with( 4 ['token' => $token, 'email' => $request->email] 5 ); 6}
####(3)送られてくるメールの内容を変更したかったので参考資料をもとに、内容を変更。
参考URL:https://teratail.com/questions/55669
** 1. Notificationファイルを作成 **
php artisan make:notification UserResetPassword
** 2 User.phpを修正 ** ` app/User.php `
php
1public function sendPasswordResetNotification($token) 2 { 3 $this->notify(new UserResetPassword($token)); 4 }
** 3. リセットメールを再定義 ** ` /app/Notifications/UserResetPassword.php `
php
1<?php 2 3 namespace App\Notifications; 4 5 use Illuminate\Bus\Queueable; 6 use Illuminate\Notifications\Notification; 7 use Illuminate\Contracts\Queue\ShouldQueue; 8 use Illuminate\Notifications\Messages\MailMessage; 9 use Illuminate\Auth\Notifications\ResetPassword; //追加 10 11 class UserResetPassword extends ResetPassword 12 { 13 /** 14 * The password reset token. 15 * 16 * @var string 17 */ 18 public $token; 19 20 21 /** 22 * Create a notification instance. 23 * 24 * @param string $token 25 * @return void 26 */ 27 public function __construct($token) 28 { 29 $this->token = $token; 30 } 31 32 /** 33 * Get the notification's channels. 34 * 35 * @param mixed $notifiable 36 * @return array|string 37 */ 38 public function via($notifiable) 39 { 40 return ['mail']; 41 } 42 43 /** 44 * Get the mail representation of the notification. 45 * 46 * @param mixed $notifiable 47 * @return \Illuminate\Notifications\Messages\MailMessage 48 */ 49 public function toMail($notifiable) 50 { 51 return (new MailMessage) 52 ->subject('パスワード再設定のご案内') 53 ->view('auth.passwords.email_text') 54 ->action('Reset Password', url('password/reset', $this->token)); 55 } 56 57 /** 58 * Get the array representation of the notification. 59 * 60 * @param mixed $notifiable 61 * @return array 62 */ 63 public function toArray($notifiable) 64 { 65 return [ 66 // 67 ]; 68 } 69 } 70``` 71 72 73 ** 4. リセットメールのViewを作成 ** 74 ` touch /resources/views/users/auth/passwords/email_text.blade.php ` 75 76```php 77<a href="{{ $actionUrl }}">{{ $actionUrl }}</a> 78``` 79 80 81** (4) リセットメール受信することを確認。 ** 82 メールの内容 83 http://example.jp:8000/admin/password/reset/d3e956530e9902b39994d246b8b55eb90fe83316aea53a8350f06b5f318052bb 84 85**(5) make:auth で作成されるViewのメールアドレスは入力フォームがあるので変更する。 ** 86 ` /resources/views/auth/passwords/reset.blade.php ` 87````php 88<tr> 89<th style="width: 150px;" class="t_right">メールアドレス</th> 90 <td> 91 {{ $email }} 92 </td> 93 </tr> 94``` 95 96 97 98 99するとメールアドレスが表示されない状態になりました。 100$emailの値をvar_dump()にて表示させてもNULLになっています。 101 102###試したこと 103Laravel5.3より、Authが変更したということでLaravel5.2のshowResetformメソッドを ` /app/Http/Controllers/Auth/ResetPasswordController.php ` にてオーバーライドする。 104```php 105 106$resetView = 'auth.passwords.reset'; 107 108public function showResetForm(Request $request, $token = null) 109 { 110 if (is_null($token)) { 111 return $this->getEmail(); 112 } 113 114 $email = $request->input('email'); 115 116 if (property_exists($this, 'resetView')) { 117 return view($this->resetView)->with(compact('token', 'email')); 118 } 119 120 if (view()->exists('auth.passwords.reset')) { 121 return view('auth.passwords.reset')->with(compact('token', 'email')); 122 } 123 124 return view('auth.reset')->with(compact('token', 'email')); 125 } 126 127``` 128上記内容でもメールアドレスは表示されませんでした。 129宜しくお願い致します。 130 131 132####補足情報 133OS:macOS Sierra Version 10.12.4 134メモリ:8 GB 1600 MHz DDR3 135php 7.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。