2014-05-14

Laravel 4 のパスワード・リマインダーのメール件名を追加&日本語化

前回の記事に引き続き人気上昇中のPHPフレームワーク「Laravel4」について書きます。
というのも、このLaravelがホントにいたれりつくせりで開発者として感動させられるからです。

特にページネーションはホントに何もかもやってくれますし、データベースのAND、OR検索などもグループ化することで複雑なものさえも簡単に実現してくれます。

ただ、だからこそ最近見たネット記事で「プログラムさえ将来機械化してしまうから職がなくなるかも」という話題に信ぴょう性を感じてしまいました。。

ま、気を取り直して、タイトルの「パスワード・リマインダーのメール件名を追加&日本語化」をご覧ください。^-^



[結論] パスワード・リマインダーの件名はデフォルトでは空白なので改造が必要。メール内容の日本語化は簡単です。


まず、基本的なパスワード・リマインダーの作成は『パスワードリマインダーとリセット』 で完了させておいてください。

では先にパスワード・リマインダーに件名を追加する方法を紹介しましょう。


1.Laravel4のパスワード・リマインダーにメール件名をセット


先ほどのリンク先の作業を済ませると、

app/controllers/RemindersController.php


というコントローラーファイルがあるので、これを開きましょう。
そして、中ほどにある「postRemind」を探します。

デフォルトでは、以下のようになっています。


public function postRemind()
{
 switch ($response = Password::remind(Input::only('email')))
 {
  case Password::INVALID_USER:
   return Redirect::back()->with('error', Lang::get($response));

  case Password::REMINDER_SENT:
   return Redirect::back()->with('status', Lang::get($response));
 }
}


ここを以下のように少しだけ改造しましょう。↓↓↓


public function postRemind()
{
 $response = Password::remind(Input::only('email'), function($message){
  
  $message->subject(Lang::get('messages.password_reminder'));
  
 });
 
 switch ($response)
 {
  case Password::INVALID_USER:
   return Redirect::back()->with('error', Lang::get($response));

  case Password::REMINDER_SENT:
   return Redirect::back()->with('status', Lang::get($response));
 }
}



簡単に言うと、$response の中にfunction を作ってその中に $message->subject() を作るだけです。

※ちなみに、Lang::get('messages.password_reminder') はローカリゼーション用なので、日本語だけでいい方は直接「パスワードのリセット: (サイトタイトル)」など件名を書き込んでください。 

はい!
以上で件名の追加は完了です。



では、次にメール本文の日本語化をしましょう。

いたれりつくせりのLaravel4ですが、ここはまだローカリゼーション対応してくれていないようです。


2.Laravel4 のパスワード・リマインダー:メール本文の日本語化


こちらはホントに簡単で、

app/views/emails/auth/reminder.blade.php


の中にある、

To reset your password, complete this form:


の部分を日本語に変更するだけでOKです。
「パスワードをリセットするためにフォームを完成させてください。」などの日本語に変更しましょう。

※もちろんローカリゼーションする場合は、


Lang::get('messages.******'); 


という具合に変更します。


ちなみに、、、


app/config/mail.php

の中にgmail の情報を書き込んでおくと、ローカル環境からでも gmailから送信することができます。
これ、すごく便利ですね。
個人的に、今後はサーバー内のメールはあまり使わなくなるかもしれません。
(でも、開発で誤送信メールには気をつけなければ!!)

ということで、設定については『Laravel4、メールの送信』がとてもわかりやすいです。^-^

以上になります。
お疲れ様でした。^^



 Hirohisa Kawaseさん、いつも役立つLaravel情報ありがとうございます!

And also thank you, satie. Your tips helped me!!

[Solved] Password reminder without subject



0 件のコメント:

コメントを投稿