ホームページ > バックエンド開発 > PHPチュートリアル > Laravelフレームワークフォーム検証の詳しい説明、laravelフレームワークform_PHPチュートリアル

Laravelフレームワークフォーム検証の詳しい説明、laravelフレームワークform_PHPチュートリアル

WBOY
リリース: 2016-07-13 10:19:24
オリジナル
706 人が閲覧しました

Laravelフレームワークフォーム検証、laravelフレームワークフォームの詳細説明

基本的な検証例

コードをコピーします コードは次のとおりです:

$validator = バリデータ::make(
array('name' => 'デイル'),
array('name' => 'required|min:5')
);

make 関数に渡される最初のパラメーターは検証されるデータであり、2 番目のパラメーターはデータに適用する必要がある検証ルールです。

複数の検証ルールは、「|」文字で区切るか、配列の個別の要素として区切ることができます。

配列を介して検証ルールを指定します

コードをコピーします コードは次のとおりです:

$validator = バリデータ::make(
array('name' => 'デイル'),
array('name' => array('required', 'min:5'))
);

Validator インスタンスが作成されたら、失敗 (または合格) 関数を使用してこの検証を実行できます。

コードをコピーします コードは次のとおりです:

if ($validator->fails())
{
// 指定されたデータは検証に合格しませんでした
}

検証が失敗した場合は、バリデーターからエラー メッセージを受け取ることができます。
コードをコピーします コードは次のとおりです:

$messages = $validator->messages();

また、failed 関数を使用して、エラー メッセージなしで検証に失敗したルールの配列を取得することもできます。
コードをコピーします コードは次のとおりです:

$failed = $validator->failed();

書類確認

Validator クラスは、サイズ、MIME など、ファイルを検証するためのいくつかの検証ルールを提供します。ファイルを検証するときは、他の検証と同様に、ファイルをバリデーターに渡すことができます。

エラーメッセージが表示されます

Validator インスタンスでメッセージ関数を呼び出すと、エラー メッセージを処理するための便利な関数が多数ある MessageBag インスタンスを取得します。

ドメインの最初のエラーメッセージを取得する

コードをコピーします コードは次のとおりです:

echo $messages->first('email');

ドメインのすべてのエラーメッセージを取得する

コードをコピーします コードは次のとおりです:

foreach ($messages->get('email') as $message)
{
//
}

すべてのドメインのすべてのエラーメッセージを取得する

コードをコピーします コードは次のとおりです:

foreach ($messages->all() as $message)
{
//
}

ドメインにメッセージが存在するかどうかを確認する

コードをコピーします コードは次のとおりです:

if ($messages->has('email'))
{
//
}

何らかの形式でエラーメッセージを取得します

コードをコピーします コードは次のとおりです:

echo $messages->first('email', '

:message

');

注: デフォルトでは、メッセージはブートストラップ互換の構文を使用してフォーマットされます。

すべてのエラーメッセージを特定の形式で取得します

コードをコピーします コードは次のとおりです:

foreach ($messages->all('
  • :message
  • ') as $message)
    {
    //
    }

    エラーメッセージとビュー

    検証を実行したら、エラー メッセージをビューにフィードバックする簡単な方法が必要になります。これは Lavavel で簡単に処理できます。例として次のルートを考えてみましょう:

    コードをコピーします コードは次のとおりです:

    Route::get('register', function()
    {
    return View::make('user.register');
    });
    Route::post('register', function()
    {
    $rules = array(...);
    $validator = Validator::make(Input::all(), $rules);
    if ($validator->fails())
    {
    return Redirect::to('register')->withErrors($validator);
    }
    });

    検証が失敗した場合は、withErrors 関数を使用して Validator インスタンスを Redirect に渡すことに注意してください。この関数は、セッションに保存されたエラー メッセージを更新して、次のリクエストで使用できるようにします。

    ただし、GET ルート内のルートにエラー メッセージを明示的にバインドする必要はないことに注意してください。これは、Laravel が常にセッションのエラーをチェックし、エラーが利用可能な場合は自動的にビューにバインドするためです。したがって、すべてのリクエストについて、$errors 変数は常にすべてのビューで使用できるため、$errors が常に定義されており、安全に使用できると便利に想定できます。 $errors 変数は、MessageBag クラスのインスタンスになります。

    したがって、ジャンプ後、ビューで自動バインドされた $errors 変数を使用できます。

    コードをコピーします コードは次のとおりです:

    first('email') ?>

    利用可能な検証ルール

    以下は、利用可能なすべての検証ルールとその機能のリストです。

    コードをコピーします コードは次のとおりです:

    承認されました
    アクティブなURL
    (日付)以降
    アルファ
    アルファダッシュ
    英数字
    (日付)前

    確認しました
    日付
    日付形式
    違う
    電子メール
    存在します (データベース)
    画像(ファイル)

    で 整数
    IPアドレス
    マックス
    MIME タイプ
    みん
    入っていません
    数値
    正規表現
    必須
    必須の場合
    必須
    必須なし
    同じ
    サイズ
    ユニーク (データベース)

    受け付けました

    このルールの値が yes、on、または 1 である必要があることを検証します。これは、利用規約への同意を確認する場合に役立ちます。

    active_url

    PHP 関数 checkdnsrr に従って、このルールの値が有効な URL である必要があることを確認します。

    後:日付

    このルールの値が、PHP 関数 strtotime を介して渡される、指定された日付以降である必要があることを検証します。

    アルファ
    このルールを検証する値は、完全に英字で構成されている必要があります。

    アルファ_ダッシュ
    このルールの値が完全に文字、数字、ダッシュ、または下線文字で構成されている必要があることを検証します。

    alpha_num
    このルールを検証する値は、完全に文字と数字で構成されている必要があります。

    前:日付
    このルールの値が指定された日付より前である必要があることを検証します。この日付は、PHP 関数 strtotime を通じて渡されます。

    間:最小、最大
    このルールの値が指定された最小値と最大値の間にある必要があることを検証します。文字列、数値、ファイルはサイズ ルールを使用して比較されます。

    確認しました
    この検証ルールの値は、foo_confirmation の値と同じである必要があります。たとえば、このルールで検証する必要があるフィールドがパスワードの場合、入力に同じパスワード確認フィールドが存在する必要があります。

    日付
    PHP 関数 strtotime に従って、このルールの値が有効な日付である必要があることを検証します。

    日付形式:形式
    PHP 関数 date_parse_from_format に従って、このルールの値が指定された形式に準拠する必要があることを検証します。

    異なる:フィールド
    このルールの値が指定されたフィールドの値と異なる必要があることを検証します。

    メール
    このルールの値が有効な電子メール アドレスである必要があることを検証します。

    存在:テーブル、カラム
    このルールの値が指定されたデータベース テーブルに存在する必要があることを検証します。

    Exists ルールの基本的な使い方

    コードをコピーします コードは次のとおりです:
    'state' => 'exists:states'

    列名を指定します
    コードをコピーします コードは次のとおりです:

    '州' => '存在:州、略語'

    さらに条件を指定することもでき、条件は「where」の形式でクエリに追加されます。
    コードをコピーします コードは次のとおりです:

    'email' => 'exists:staff,email,account_id,1'

    画像
    このルールを検証する値は画像 (jpeg、png、bmp、または gif) である必要があります。

    in:foo,bar,...

    このルールの値が指定されたリストに存在する必要があることを確認してください。

    整数

    このルールの値が整数である必要があることを検証します。


    このルールの値が有効な IP アドレスである必要があることを確認してください。

    最大:値

    このルールの値が最大値未満でなければならないことを検証します。文字列、数値、ファイルはサイズ ルールを使用して比較されます。

    マイム:フー、バー、...

    このルールを検証するファイルの MIME タイプは、指定されたリストに含まれている必要があります。

    MIMEルールの基本的な使い方

    コードをコピーします コードは次のとおりです:

    '写真' => 'mimes:jpeg,bmp,png'

    分:値
    このルールを検証する値は、最小値より大きくなければなりません。文字列、数値、ファイルはサイズ ルールを使用して比較されます。

    not_in:foo、bar、...

    このルールの値が指定されたリストに存在してはいけないことを検証します。

    数値

    このルールを検証する値は数値である必要があります。

    正規表現:パターン

    このルールの値が指定された正規表現と一致する必要があることを検証します。

    注: 正規表現モードを使用する場合、特に正規表現にパイプ文字が含まれている場合は、パイプ区切り文字の代わりに配列を使用してルールを指定する必要があります。

    必須

    このルールの値が入力データに存在する必要があることを検証します。

    required_if:フィールド、値

    指定されたフィールドが特定の値である場合、このルールの値が存在する必要があります。

    required_with:foo、bar、...

    指定されたドメインが存在する場合にのみ、このルールの値が存在する必要があることを検証します。

    必須_なし:foo、bar、...

    指定されたドメインが存在しない場合にのみ、このルールの値が存在する必要があることを確認してください。

    同じ:フィールド

    このルールの値が指定されたドメインの値と同じである必要があることを検証します。

    サイズ:値

    このルールの値が指定された値と同じサイズでなければならないことを検証します。文字列の場合、値は文字数を表します。数値の場合、値は整数値を表します。ファイルの場合、値はファイルのサイズを KB 単位で表します。

    一意:テーブル、列、例外、idColumn

    このルールの値が指定されたデータベース テーブル内で一意である必要があることを確認してください。列が指定されていない場合は、フィールドの名前が使用されます。

    ユニークルールの基本的な使い方

    コードをコピーします コードは次のとおりです:

    'メール' => 'ユニーク:ユーザー'
    列名を指定します
    'email' => 'unique:users,email_address'
    指定された ID を強制的に無視します
    '電子メール' => '固有:ユーザー、電子メールアドレス、10'

    URL

    このルールの値が有効な URL である必要があることを確認してください。

    カスタマイズされたエラーメッセージ

    必要に応じて、デフォルトのエラーメッセージの代わりにカスタマイズしたエラーメッセージを使用できます。エラー メッセージをカスタマイズするにはいくつかの方法があります。

    カスタムメッセージをバリデーターに渡す

    コードをコピーします コードは次のとおりです:

    $messages = 配列(
    'required' => ':attribute フィールドは必須です。',
    );
    $validator = Validator::make($input, $rules, $messages);

    注: :attribute プレースホルダーは、検証対象のドメインの実際の名前に置き換えられます。エラー メッセージでは他のプレースホルダーを使用することもできます。

    その他の検証プレースホルダー

    コードをコピーします コードは次のとおりです:

    $messages = array(
    'same' => ':attribute と :other は一致する必要があります。',
    'size' => ':attribute は正確に :size である必要があります。',
    'between' => ':attribute は :min - :max の間にある必要があります。',
    'in' => ':attribute は次のタイプのいずれかである必要があります:
    :値',
    );

    場合によっては、特定のドメインに対してのみカスタマイズされたエラー メッセージを指定したい場合があります:

    指定したドメインのカスタマイズされたエラー メッセージを指定する

    コードをコピーします コードは次のとおりです:

    $messages = 配列(
    'email.required' => 'あなたの電子メール アドレスを知る必要があります!',
    );

    場合によっては、エラー メッセージをバリデーターに直接渡すのではなく、言語ファイルで指定したい場合があります。これを実現するには、カスタム メッセージを app/lang/xx/validation.php ファイルのカスタム配列に追加します。

    言語ファイルでエラーメッセージを指定

    コードをコピーします コードは次のとおりです:

    'カスタム' => 配列(
    'メール' => 配列(
    '必須' => 'あなたの電子メールアドレスを知る必要があります!',
    )、
    )、

    カスタマイズされた検証ルール

    Laravel にはさまざまな便利な検証ルールが用意されていますが、独自の検証ルールを追加することもできます。 1 つの方法は、Validator::extend 関数を使用してカスタム検証ルールを登録することです:

    カスタマイズされた検証ルールを登録する

    コードをコピーします コードは次のとおりです:

    Validator::extend('foo', function($attribute, $value, $parameters)
    {
    return $value == 'foo';
    });

    注: extend 関数に渡されるルールの名前は、「スネークケース」命名規則に準拠する必要があります。

    カスタマイズされたバリデーターは、検証される属性の名前、検証される属性の値、およびこのルールに渡されるパラメーターの 3 つのパラメーターを受け入れます。

    クロージャを使用する代わりにクラス関数をextend関数に渡すこともできます:

    コードをコピーします コードは次のとおりです:

    Validator::extend('foo', 'FooValidator@validate');

    カスタム ルールのエラー メッセージを定義する必要があることに注意してください。カスタム メッセージのインライン配列を使用することも、検証言語ファイルにカスタム メッセージを追加することもできます。

    クロージャコールバックでバリデータを拡張する代わりに、バリデータクラス自体を拡張することもできます。これを実現するには、IlluminateValidationValidator を継承するバリデーター クラスを追加します。クラスに validate で始まる検証関数を追加できます:

    拡張バリデータークラス

    コードをコピーします コードは次のとおりです:

    class CustomValidator extends IlluminateValidationValidator {
    パブリック関数 validateFoo($attribute, $value, $parameters)
    {
    return $value == 'foo';
    }
    }

    以下では、カスタムバリデーター拡張機能を登録する必要があります:

    カスタムバリデータ拡張機能を登録する必要があります

    コードをコピーします コードは次のとおりです:

    Validator::resolver(function($translator, $data, $rules, $messages)
    {
    return new CustomValidator($translator, $data, $rules, $messages);
    });

    カスタム検証ルールを作成するとき、エラー メッセージのカスタム プレースホルダーを定義する必要がある場合があります。これを実現するには、上記のようなカスタム バリデーターを作成し、そのバリデーターに replaceXXX 関数を追加します。

    コードをコピーします コードは次のとおりです:
    保護された関数 replaceFoo($message, $attribute, $rule, $parameters)
    {
    return str_replace(':foo', $parameters[0], $message);
    }



    JavaScriptで複数のフォーム検証関数を呼び出す方法?

    メソッドの特別な要約を書くことができます。

    例:


    function checkFrom(){
    return method1()&&method2()&&method3()&&method4()&&method5()...;
    }
    ただし、検証方法を整理し、より一般的な検証フレームワークを作成することが最善です。

    jsフォーム検証フレームワークをお勧めします

    実際、jqueryValidate はエラー メッセージをカスタマイズできます。そのドキュメントを参照してください。

    ここで showErrors 属性を使用できます:
    $(".selector").validate({ showErrors: function(errorMap, errorList) { $("#summary").html("Your form contains " + this.numberOfInvalids( ) + " エラー。詳細は以下を参照してください。"); this.defaultShowErrors() }});
    次のプロパティを参照することもできます: errorLabelContainer、errorContainer、wrapper、errorElement、validClass、errorClass。エラー メッセージの HTML 構造をカスタマイズするだけで済み、CSS を使用してフローティング ボックスを制御できます。


    http://www.bkjia.com/PHPjc/874636.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/874636.html技術記事 Laravelフレームワークのフォーム検証の詳細な説明、laravelフレームワークのフォームの基本的な検証の例は、次のようにコードをコピーします: $validator = Validator::make( array('name' = 'Dayle'), array('name' = 'required|...
    関連ラベル:
    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    最新の問題
    人気のおすすめ
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート