laravel初心者です。
パスワードリセットが動かず悩んでおります。
route.phpには、
php
1Route::get('/password/email', 'Auth\PasswordController@getEmail'); 2Route::post('/password/email', 'Auth\PasswordController@postEmail'); 3 4Route::get('/password/reset/{token}', 'Auth\PasswordController@getReset'); 5Route::post('/password/reset', 'Auth\PasswordController@postReset');
と設定しました。
viewは、
views/auth/password.blade.php
views/auth/reset.blade.php
views/emails/password.blade.php
を用意しました。
ですが、emailを入力して送信ボタンをクリックすると、画面が真っ白になります。
過去の投稿を参考にして、
vendor/laravel/framework/src/Illuminate/Foundation/Auth/ResetsPasswords.phpの
デバッグをしてみたら、以下の$responseの値がnullでした。
$request->only('email')の値は正しく取得できています。
あとは、どの部分をチェックしたらいいのか、教えてください。
宜しくお願いします。
php
1 $response = Password::sendResetLink($request->only('email'), function (Message $message) { 2 $message->subject($this->getEmailSubject()); 3 });
メールは送信されていません。
エラーログは、htdocs/システム名/storage/logs/laravel.log には、エラーらしきログは出ません。(送信時間にログファイルが更新されません。)
その他、見るべきところはありますでしょうか?
ちなみに
php
1$mailer->send( 2'user.email.confirm', 3['user' => $user, 'token' => $user->confirmation_token], function ($message) use ($user) { $message->to($user->email)->subject('仮登録のお知らせ'); } );
別の機能ですが、上記の場合のメールは送ることができるので、パスワードリセットに限っておかしいような形です。。
formのactionは、
html
1<form class="form-auth" action="/password/email" method="POST">
envは、システム名などがあるので、全部は出せませんが、
php
1APP_ENV=local 2APP_DEBUG=true 3APP_KEY=XXXXXXXXXXXXXXXXXXXXXXXX 4 5DB_HOST=127.0.0.1 6DB_DATABASE=DB名 7DB_USERNAME=root 8DB_PASSWORD=root 9 10CACHE_DRIVER=file 11SESSION_DRIVER=file 12QUEUE_DRIVER=sync 13 14MAIL_DRIVER=smtp 15MAIL_HOST=お名前サーバー 16MAIL_PORT=587 17MAIL_FROM_ADDRESS=システムのメールアドレス 18MAIL_FROM_NAME=システムのユーザ名 19MAIL_USERNAME=システムのメールアドレス 20MAIL_PASSWORD=パスワード 21MAIL_ENCRYPTION=tls 22
となっています。
以下を試しましたが、
# php artisan tinker Psy Shell v0.4.4 (PHP 5.5.26 — cli) by Justin Hileman >>> Mail::raw('Test Mail', function($message) { $message->to('xxxx@xxxx.jp')->subject('test'); }); => 1
xxxx@xxxx.jp には正常にメールが届きます。
また、以前に別の担当者がマルチユーザ対応?ということで、
php
1Route::post('/admin/password_reset',function(Request $request){ 2 Password::admin()->sendResetLink($request->only('email'), function (Message $message) { 3 $message->subject("Password Reset Link"); 4 }); 5 //ログイン画面に戻る 6 return \Redirect::to("/admin"); 7});
ということをやっていた経緯があります。現在はやっていません。
resetPasswordsに上記のようにやってみると、
php
1 $response = Password::user()->sendResetLink($request->only('email'), function (Message $message) { 2 $message->subject($this->getEmailSubject()); 3 });
php
1SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'email' cannot be null 2 3SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'email' cannot be null (SQL: insert into `password_resets` (`email`, `token`, `type`, `created_at`) values (, 41ab894a204a827415dcd728ff1a41....
とemailが取れないというエラーになります。
ですが、上記のsendResetLinkの前に、var_dump($request->only('email'))を実行すると、メールアドレスは取得できます。
回答2件
あなたの回答
tips
プレビュー