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



2014-05-10

Laravel4 に reCAPTCHA を設置する方法

今現在、業務向けにAndroidアプリを作成しているのですが、機能的にサーバーとの連携が必要なため、以前から気になっていたPHPフレームワーク「Laravel4」を使ってページを作成することにしました。

Laravel4は最近特に海外で人気なようですし、前々から「良い良い」と聞いていたので、今後のために勉強をはじめましたがやはり完全に使いこなすまでには時間がかかりそうですね。

・・・ということで、自分自身のためにも今回の記事を投稿します。

(追記)どうやら reCAPTCHAは仕様が変わったらしくこの方法ではうまく行かない場合があるようです。そのため、以下のようなパッケージを利用することをおすすめします。

Laravel 4: https://github.com/mewebstudio/captcha/tree/master-l4
Laravel 5: https://github.com/mewebstudio/captcha




[最終結論] 公開されているプラグイン本家の設置方法をみただけではうまくいきませんでした。(汗)

まずは環境の方から。

OS: Ubuntu 14.04
PHP: 5.5.9
Laravel: 4.1.28
reCAPTCHA: publicキーとprivateキーを取得しておく。

そして、laravelに設置するプラグインは「greggilbert/recaptcha」です。


では、早速作業に入りましょう!



1.プラグインの情報を追加する


まずpublicフォルダの中にある「composer.json」を開いて、require の中に

"greggilbert/recaptcha": "dev-master"

を追加。




そして、app/config/app.phpを開いて、「providers」の中に

Greggilbert\Recaptcha\RecaptchaServiceProvider

を追加します。


2.composerを使ってインストール


ターミナルを開いて、laravelをインストールしたフォルダへ移動し、

composer update

を実行しましょう。


成功すれば、上のような画面になります。


3.reCAPTCHAの情報を追加

※追記

すみません。今見なおしたら、以下のコマンドを実行する手順が抜けていました。
ホントにごめんなさい。m_ _m
php artisan config:publish greggilbert/recaptcha


app/config/packagesにファイルが作成されているので、

app/config/packages/greggilbert/recaptcha/config.php

を開きましょう。
この中に以下のように、それぞれ public_key と private_key を設定する部分があるので、ここにreCaptchaで事前に取得したパスワードを書き込みます。




はい。以上でプラグインを使う準備は完了です。



4.ビュー&バリデートに設置

まずビューにreCAPTCHAを表示するためにコントローラー内で、

$this->layout->content = View::make('home.home, array(
    recaptcha' => Form::captcha()
));

を追加。そして、ビューの中で、

<?=$recaptcha; ?>

とします。

※追記

コントローラで作成しなくても、直接 View の中で以下のように利用することもできます。

{{ Form::captcha() }}

これで以下のような画像認証が表示されます。



あとは以下のように通常通りバリデートのルールにプラグインの情報を追加してあげれば完了です。(reCAPTCHA以外のバリデートが必要な場合は適宜追加してくださいね。)


$validator = Validator::make(
array(
'recaptcha_response_field' => Input::get('recaptcha_response_field')
),
array(
'recaptcha_response_field' => 'required|recaptcha'
)
);

if($validator->fails()) {

// 認証失敗 ;_;

}


はい!
これですべて完了です。

それにしても amazon で laravel4の本を探してみましたがまだ日本語板のものってないんですね。
そのうち 海外版kindle本を買う必要が出てくるかも、と思いました。
(もしかすると今はプログラムの本とかは売れないから出さないのかな・・・?)





Greg Gilbert, thank you from my heart!
Your plug-in is really useful.:)))

2014-05-02

左右にスライドして実行するAndroid-Bootstrap 拡張ボタンを作ってみた。(ダウンロード可)

前回の記事でも書きましたが、私は今 Android-Bootstrap にハマっています。
とても便利なので。(^-^)v

ということで今回は前回に引き続き Android-Bootstrap を拡張したスライドボタンをここで公開したいと思います。




とはいえ、作業はほぼ前回と同じなので簡単に説明します。


[準備編]

1.まずGitHub からBootstrapSlideButtonをダウンロードし解凍してください。

2.Android-Bootstrap の「src」の中に「com.sukohi.lib」というパッケージフォルダを作り、BootstrapSlideButton.javaをコピー(もちろん移動でもOK)

3.次に「layout」フォルダの中に、bootstrap_slide_button.xml をコピー。

4.最後に「values」の中にattrs.xml をコピーして上書きする。


はい。
以上で準備は完了です。


[実行編]

では、実際に使って見ましょう。

使いたいレイアウトのxmlの中で、

    <com.sukohi.lib.BootstrapSlideButton
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        bootstrap:bsb_type="success"
        bootstrap:bsb_slide_mode="both"
        bootstrap:bsb_right_text="Right Text"
        bootstrap:bsb_center_text="Center Text"
        bootstrap:bsb_left_text="Left Text"
        bootstrap:bsb_text_size="16"
        bootstrap:bsb_right_icon="fa-floppy-o"
        bootstrap:bsb_left_icon="fa-times-circle-o"
        bootstrap:bsb_restorable="true"
        bootstrap:bsb_padding="10"
        bootstrap:bsb_padding_top="10"
        bootstrap:bsb_padding_right="10"
        bootstrap:bsb_padding_bottom="10"
        bootstrap:bsb_padding_left="10" />

こんな感じでタグを配置します。
(※ネームスペースとして xmlns:bootstrap="http://schemas.android.com/apk/res-auto" を忘れずに!)

プロパティの意味は以下です。

bootstrap:bsb_type ・・・ ブートストラップの色タイプ。「Default」「Primary」「Info」「Success Warning」「Danger」「Inverse」の7つ。

bootstrap:bsb_slide_mode ・・・ 右のみ、左のみ、両方にスライド可能かを決める。パラメータは「right」「left」「both」

bootstrap:bsb_right_text ・・・ 右側のテキスト

bootstrap:bsb_center_text ・・・ 中央のテキスト

bootstrap:bsb_left_text ・・・ 左側のテキスト

bootstrap:bsb_text_size ・・・ テキストのサイズ

bootstrap:bsb_right_icon ・・・ 右側のアイコン(fa-****という形。Android-Bootstrapと同じ)

bootstrap:bsb_left_icon ・・・ 左側のアイコン

bootstrap:bsb_restorable ・・・ スライドさせたあとも元に戻せるかどうか

bootstrap:bsb_padding ・・・ padding。これを使うと top, right, bottom, left を省略可。

bootstrap:bsb_padding_top
bootstrap:bsb_padding_right
bootstrap:bsb_padding_bottom
bootstrap:bsb_padding_left ・・・ 個別のpadding。


※コード内での使い方は「BootstrapSlideButton.java」の中にある「Example」を参照してください。


ちなみに今回のボタンは本日アップデートした『HTBニュース』で使われています。
ぜひ参考にしてみてくださいね。

ちなみに、このスライドボタンだけでなくチェックボックスやCalloutなどもGitHubで公開しています。もしもう少し数が多くなってきたら「Android-Bootstrap ○○」みたいな形でひとまとめにして公開したいと思います。
(・・・とはいえ、本家のBootstrap とは全く関係のないコンポーネントもありますけどね^^;)

お疲れ様でした。