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

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

Jul 13, 2016 am 10:19 AM
laravel フォームの検証

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|...
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    Video Face Swap

    Video Face Swap

    完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    Laravelで電子メールの送信が失敗したときに返品コードを取得する方法は? Laravelで電子メールの送信が失敗したときに返品コードを取得する方法は? Apr 01, 2025 pm 02:45 PM

    Laravelの電子メールの送信が失敗したときに戻りコードを取得する方法。 Laravelを使用してアプリケーションを開発する場合、検証コードを送信する必要がある状況に遭遇することがよくあります。そして実際には...

    Laravelスケジュールタスクは実行されません:スケジュール:実行コマンドの後にタスクが実行されていない場合はどうすればよいですか? Laravelスケジュールタスクは実行されません:スケジュール:実行コマンドの後にタスクが実行されていない場合はどうすればよいですか? Mar 31, 2025 pm 11:24 PM

    LaravelスケジュールタスクRAN RANSPONSIVEトラブルシューティングRALAVELのスケジュールタスクスケジューリングを使用すると、多くの開発者がこの問題に遭遇します。スケジュール:実行...

    Laravelでは、検証コードが電子メールで送信できない状況に対処する方法は? Laravelでは、検証コードが電子メールで送信できない状況に対処する方法は? Mar 31, 2025 pm 11:48 PM

    Laravelの電子メールの検証コードの送信の障害を処理する方法は、Laravelを使用することです...

    DCAT管理者にデータを追加するためにクリックのカスタムテーブル関数を実装する方法は? DCAT管理者にデータを追加するためにクリックのカスタムテーブル関数を実装する方法は? Apr 01, 2025 am 07:09 AM

    DCATを使用するときにDCATADMIN(Laravel-Admin)にデータを追加するためにカスタムクリックのテーブル関数を実装する方法...

    Laravel Redis接続共有:選択方法が他の接続に影響するのはなぜですか? Laravel Redis接続共有:選択方法が他の接続に影響するのはなぜですか? Apr 01, 2025 am 07:45 AM

    Laravel FrameworkでRedis接続の共有の影響とLaravelフレームワークとRedisを使用する際のメソッドを選択すると、開発者は問題に遭遇する可能性があります。

    Laravel Multi-Tenant Extension Stancl/Tenancy:テナントデータベース接続のホストアドレスをカスタマイズする方法は? Laravel Multi-Tenant Extension Stancl/Tenancy:テナントデータベース接続のホストアドレスをカスタマイズする方法は? Apr 01, 2025 am 09:09 AM

    Laravel Multi-Tenant拡張機能パッケージStancl/Tenancyのカスタムテナントデータベース接続Laravel Multi-Tenant ExtensionパッケージStancl/Tenancyを使用したマルチテナントアプリケーションを構築する際の...

    バングラ部分モデル検索のlaravelEloquent orm) バングラ部分モデル検索のlaravelEloquent orm) Apr 08, 2025 pm 02:06 PM

    LaravelEloquentモデルの検索:データベースデータを簡単に取得するEloquentormは、データベースを操作するための簡潔で理解しやすい方法を提供します。この記事では、さまざまな雄弁なモデル検索手法を詳細に紹介して、データベースからのデータを効率的に取得するのに役立ちます。 1.すべてのレコードを取得します。 ALL()メソッドを使用して、データベーステーブルですべてのレコードを取得します:useapp \ models \ post; $ post = post :: all();これにより、コレクションが返されます。 Foreach Loopまたはその他の収集方法を使用してデータにアクセスできます。

    Laravelの地理空間:インタラクティブマップと大量のデータの最適化 Laravelの地理空間:インタラクティブマップと大量のデータの最適化 Apr 08, 2025 pm 12:24 PM

    700万のレコードを効率的に処理し、地理空間技術を使用したインタラクティブマップを作成します。この記事では、LaravelとMySQLを使用して700万を超えるレコードを効率的に処理し、それらをインタラクティブなマップの視覚化に変換する方法について説明します。最初の課題プロジェクトの要件:MySQLデータベースに700万のレコードを使用して貴重な洞察を抽出します。多くの人は最初に言語をプログラミングすることを検討しますが、データベース自体を無視します。ニーズを満たすことができますか?データ移行または構造調​​整は必要ですか? MySQLはこのような大きなデータ負荷に耐えることができますか?予備分析:キーフィルターとプロパティを特定する必要があります。分析後、ソリューションに関連している属性はわずかであることがわかりました。フィルターの実現可能性を確認し、検索を最適化するためにいくつかの制限を設定しました。都市に基づくマップ検索

    See all articles