質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Authentication

Authentication(認証)は正当性を認証する為の工程です。ログイン処理等で使われます。

Q&A

解決済

1回答

4196閲覧

Laravel5.4 認証のパスワード再設定にて、メールアドレスを取得したい。

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Authentication

Authentication(認証)は正当性を認証する為の工程です。ログイン処理等で使われます。

0グッド

0クリップ

投稿2017/05/23 01:51

編集2017/05/23 03:41

プログラミング初心者です。
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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

自己解決できました。
####(3)送られてくるメールの内容を変更したかったので参考資料をもとに、内容を変更。
にてemailを渡していなかったのが原因でした。

2 User.phpを修正
app/User.php

php

1public function sendPasswordResetNotification($token) 2 { 3 $this->notify(new UserResetPassword($token,$this->email)); //$this->emailを追加 4 }

3. リセットメールを再定義
/app/Notifications/UserResetPassword.php

php

1<?php 2 3namespace App\Notifications; 4 5use Illuminate\Bus\Queueable; 6use Illuminate\Notifications\Notification; 7use Illuminate\Contracts\Queue\ShouldQueue; 8use Illuminate\Notifications\Messages\MailMessage; 9use Illuminate\Auth\Notifications\ResetPassword; 10 11class UserResetPassword extends ResetPassword 12{ 13 /** 14 * The password reset token. 15 * 16 * @var string 17 */ 18 public $token; 19 private $email; 20 21 22 /** 23 * Create a notification instance. 24 * 25 * @param string $token 26 * @return void 27 */ 28 public function __construct($token,$email) 29 { //↑$emailを追加 30 parent::__construct($token); 31 $this->email = $email; //追加 32 33 } 34 35 /** 36 * Get the notification's channels. 37 * 38 * @param mixed $notifiable 39 * @return array|string 40 */ 41 public function via($notifiable) 42 { 43 return ['mail']; 44 } 45 46 /** 47 * Get the mail representation of the notification. 48 * 49 * @param mixed $notifiable 50 * @return \Illuminate\Notifications\Messages\MailMessage 51 */ 52 public function toMail($notifiable) 53 { 54 return (new MailMessage) 55 ->subject('パスワード再設定のご案内') 56 ->view('auth.passwords.email_text') 57 ->action('Reset Password', url('password/reset/'.$this->token.'?email='.$this->email)); // '?email='.$this->emailを追加 58 } 59 60 /** 61 * Get the array representation of the notification. 62 * 63 * @param mixed $notifiable 64 * @return array 65 */ 66 public function toArray($notifiable) 67 { 68 return [ 69 // 70 ]; 71 } 72} 73

/resources/views/auth/passwords/reset.blade.php はそのままで無事に参照できました。

投稿2017/05/23 08:26

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問