Laravel3 を WebMatrix3 で開発しロリポップで公開する no.11 【Validator 値のチェックを忘れずに】

前回はフォーム画面を作成しました。今回は post メソッド側で、値を受け取って処理をしてみましょう。 signup.php コントローラファイルを以下に変更しました。

<?php

class Signup_Controller extends Base_Controller
{
    public $restful = TRUE;

    public function get_index()
    {
        return View::make(\'signup\');
    }

    public function post_index()
    {
        $rules = array(
            \'email\'    => \'required|unique:authentication\',
            \'password\' => \'required|confirmed\',
        );

        $v = Validator::make(Input::get(), $rules);
        if ($v->fails())
        {
            return Redirect::to(\'signup\')->with(\'signup_errors\', true);
        }
        else
        {
        }
    }
}

そして signup.blade.php ビューファイルを以下のように変更しました。

{{ Form::open(\'signup\') }}

@if (Session::has(\'signup_errors\'))
<span class=\"error\">登録失敗</span>
@endif

<p>{{ Form::label(\'email\', \'メールアドレス\') }}</p>
<p>{{ Form::text(\'email\') }}</p>

<p>{{ Form::label(\'password\', \'パスワード\') }}</p>
<p>{{ Form::password(\'password\') }}</p>
<p>{{ Form::label(\'password_confirmation\', \'パスワード(確認用)\') }}</p>
<p>{{ Form::password(\'password_confirmation\') }}</p>

<p>{{ Form::submit(\'登録\') }}</p>

{{ Form::close() }}

post メソッドに追加した内容ですが、まずは送られてくるフォームの値をヴァリデートしたいと思います。そのためには各項目に対するルールを設定するわけですが、その内容を $rules 変数にハッシュとして登録しました。 required は必須入力で、未ニュー力の場合にエラー扱いにしてくれます。 unique は : に続く値をテーブル名とし、キーの値と同じ値(この例だと email )が既に登録済みの場合にエラーにしてくれます。 confirmed はキーに _confirmation をつけたキーの値と比べて値が異なった場合にエラーにしてくれます。 Input クラスの get メソッドでフォームから送信された値を取得することができます。 Validator クラスの make メソッドにフォームの値とルールを渡すことでヴァリデートを行うことができます。インスタンスが返されますので、 fails メソッドを使うことで、エラーの有無を取得出来ます。一つでもエラーが有る場合は true を返します。エラーが一つもない場合に true を返す passes メソッドも存在しますので、お好きな方をお使いください。

実際に動かしてみましょう。メールアドレス、パスワードの空欄時、パスワードと確認フィールドの不一致時に、フォーム画面に戻り「登録失敗」と表示され、ヴァリデートルールに違反しない内容で送信した場合に空白画面に遷移すれば大丈夫です。

それでは今回はここまで。

カテゴリー: Laravel3, Web, WebMatrix, ロリポップ タグ: , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です