国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
キーテイクアウト
カスタムルールでLaravelの組み込みの検証ルールを使用できますか?
Laravelを使用すると、ビューに検証エラーメッセージを簡単に表示できます。検証が失敗すると、Laravelはセッションに保存されているすべての検証エラーを使用して、ユーザーを以前の場所にリダイレクトします。次に、$エラー変數(shù)を使用してビューにこれらのエラーを表示できます。これは、Laravelによってすべてのビューで自動的に利用可能になります。
laravelで配列を検証するにはどうすればよいですか?
laravelでファイルアップロードを検証するにはどうすればよいですか?
laravelで検証障害を処理するにはどうすればよいですか?
ホームページ バックエンド開発 PHPチュートリアル Laravelのデータ検証:正しい方法 - カスタムバリデーター

Laravelのデータ検証:正しい方法 - カスタムバリデーター

Feb 20, 2025 am 11:35 AM

Data Validation in Laravel: The Right Way - Custom Validators

Laravelのデータ検証:正しい方法 - カスタムバリデーター

キーテイクアウト

  • Laravelの組み込みデータ検証パッケージを拡張して、スペースを含むフルネームやPINコードの検証など、特定のニーズのカスタム検証ルールを作成できます。 LaravelのIlluminateValidationValidatorクラスを拡張し、データとそれぞれのエラーメッセージを検証する新しいメソッドを追加することにより、カスタム検証ルールが作成されます。
  • 新しい検証ルールは、「検証」プレフィックスとタイトルの殘りの名前に名前が付けられている必要があります。検証ルールは、メソッドの名前が付けられているもの(「検証」プレフィックスなしで)の小文字で行われ、各単語はアンダースコアによって分離されます。
  • カスタム検証ルールを作成した後、これらのルールをLaravelの検証パッケージにバインドするために、サービスプロバイダーを作成する必要があります。このサービスプロバイダーは、app/config/app.phpファイルを介してlaravelによってロードされます。
  • 前のパートでは、Laravelのデータ検証パッケージを使用してLaravelのデータを検証する方法と、ドライの原則でコードを再利用可能にするためにエンティティ固有のサービスにデータ検証を抽象化する方法を學びました。これで、それぞれの検証ルールを使用して、アプリの各エンティティの検証サービスを簡単に作成し、データを検証し、エラーを簡単にフェッチおよび表示する場所に挿入できます。
  • しかし、もっと欲しいとしたらどうしますか?
  • このチュートリアルのソースコードは、こちらから入手できます。このコードを実行する前に、Project Directory內(nèi)にLaravel FrameworkをインストールするためにComposerインストールを実行する必要があります。

もっと

の必要性

箱から出して、Laravelは多くの有用で一般的な検証ルールを提供します。しかし、もっと欲しいとしたらどうでしょうか?もっと具體的なものが必要な場合はどうなりますか?ここの例では、TestFormValidatorではAlpha_Dashを使用して名前を検証しましたが、フルネームを検証するのは理想的ではありません。一般的に、人のフルネームは、名と姓、そしておそらくミドルネームで構成されます。これらはすべてスペースによって分離されます。同様に、フォームでピンコードを検証したい場合は、Laravelが提供するAlpha_Numルールを使用できない場合は、スペースも許可することができるはずです。

さて、Laravelは、検証パッケージを簡単に拡張し、カスタム検証ルールを追加するオプションを提供します。 Rocketcandy/services/validation/create validatorextended.phpを作成し、次のコードを追加します。
<span><span><?php
</span></span><span>
</span><span><span>namespace RocketCandy<span>\Services\Validation</span>;
</span></span><span>
</span><span><span>use Illuminate<span>\Validation\Validator</span> as IlluminateValidator;
</span></span><span>
</span><span><span>class ValidatorExtended extends IlluminateValidator {
</span></span><span>
</span><span>	<span>private $_custom_messages = array(
</span></span><span>		<span>"alpha_dash_spaces" => "The :attribute may only contain letters, spaces, and dashes.",
</span></span><span>		<span>"alpha_num_spaces" => "The :attribute may only contain letters, numbers, and spaces.",
</span></span><span>	<span>);
</span></span><span>
</span><span>	<span>public function __construct( $translator, $data, $rules, $messages = array(), $customAttributes = array() ) {
</span></span><span>		<span><span>parent::</span>__construct( $translator, $data, $rules, $messages, $customAttributes );
</span></span><span>
</span><span>		<span>$this->_set_custom_stuff();
</span></span><span>	<span>}
</span></span><span>
</span><span>	<span>/**
</span></span><span><span>	 * Setup any customizations etc
</span></span><span><span>	 *
</span></span><span><span>	 * <span>@return <span>void</span>
</span></span></span><span><span>	 */
</span></span><span>	<span>protected function _set_custom_stuff() {
</span></span><span>		<span>//setup our custom error messages
</span></span><span>		<span>$this->setCustomMessages( $this->_custom_messages );
</span></span><span>	<span>}
</span></span><span>
</span><span>	<span>/**
</span></span><span><span>	 * Allow only alphabets, spaces and dashes (hyphens and underscores)
</span></span><span><span>	 *
</span></span><span><span>	 * <span>@param <span>string</span> $attribute
</span></span></span><span><span>	 * <span>@param <span>mixed</span> $value
</span></span></span><span><span>	 * <span>@return <span>bool</span>
</span></span></span><span><span>	 */
</span></span><span>	<span>protected function validateAlphaDashSpaces( $attribute, $value ) {
</span></span><span>		<span>return (bool) preg_match( "/^[A-Za-z\s-_]+$/", $value );
</span></span><span>	<span>}
</span></span><span>
</span><span>	<span>/**
</span></span><span><span>	 * Allow only alphabets, numbers, and spaces
</span></span><span><span>	 *
</span></span><span><span>	 * <span>@param <span>string</span> $attribute
</span></span></span><span><span>	 * <span>@param <span>mixed</span> $value
</span></span></span><span><span>	 * <span>@return <span>bool</span>
</span></span></span><span><span>	 */
</span></span><span>	<span>protected function validateAlphaNumSpaces( $attribute, $value ) {
</span></span><span>		<span>return (bool) preg_match( "/^[A-Za-z0-9\s]+$/", $value );
</span></span><span>	<span>}
</span></span><span>
</span><span><span>}	//end of class
</span></span><span>
</span><span>
</span><span><span>//EOF</span></span>

ここで、私たちのクラスはLaravelのIlluminateValidationValidatorクラスを拡張し、2つの新しい方法(validatealphadashspaces()とvalidatealphanumspaces())を追加します。検証されているデータフィールド。

ここで注意すべきことは、私たちが方法の名前を付ける方法です。すべての検証ルールメソッド名には、検証プレフィックスが必要であり、殘りの部分はタイトルケース(もちろんスペースなし)でなければなりません。検証ルールは、メソッドの名前が付けられているもの(検証プレフィックスなしで)の小文字で行われ、各単語はアンダースコアによって分離されます。したがって、alpha_dash_spaces検証ルールを追加する場合、対応するメソッドはvalidatealphadashspaces()と呼ばれます。

したがって、alpha_dash_spacesとalpha_num_spacesの検証ルールをここに追加しました。 alpha_dash_spacesは文字、ダッシュ(ハイフンとアンダースコア)、およびスペースを許可しますが、alpha_num_spacesは文字、數(shù)字(數(shù)字0?9)、スペースのみを許可します。

これはまだ終わっていませんが、このクラスはLaravelの検証クラスのみを拡張しています。 Laravelにそれを認識させる必要があります。そのため、上記のVaidationサービスに新しいルールを追加すると、Laravelはそれらのルールに従って検証を実行する方法を知っています。

laravel docsは、これを行うことができると述べています

> app/start/global.phpに貼り付けるか、app/start/global.phpにそのファイルをロードしてロードして、app directory內(nèi)に新しいファイルを作成します。しかし、それはそれほどきれいに見えず、私たちが変更する必要のないファイルを変更して、あちこちにビットやピースを貼り付けます。いいえ、このすべての検証関連コードを一緒に保持したいので、サービスプロバイダーを作成し、カスタム検証ルールをLaravelの検証パッケージに接著します。

balidationextensionserviceprovider.phpを作成します。

<span>Validator<span>::</span>resolver( function( $translator, $data, $rules, $messages ) {
</span>	<span>return new <span>\RocketCandy\Services\Validation\ValidatorExtended</span>( $translator, $data, $rules, $messages );
</span><span>} );</span>
通常、必要なバインディングを行うためにregister()メソッドを使用する前に、Laravelでサービスプロバイダーを作成した場合。ここで拡張したのは、抽象クラスIlluminateSuportServiceProviderの唯一の抽象的な方法です。レジスタ()で検証拡張機能を接著できない理由は、サービスプロバイダーがLaravelによって読み込まれ、Laravelが後で検証パッケージを初期化するため、私たちにスローされた例外のボレーに遭遇するので、それが起動されるためです。存在しないオブジェクトを使用して存在しないものを拡張しようとしています。一方、Boot()メソッドはリクエストがルーティングされる直前に起動されるため、Laravelの検証パッケージに物を安全に接著できます。

ここで、Laravelにこのサービスプロバイダーをロードするように指示する必要があります。すべてが設定されます。アプリ/config/app.phpを開き、プロバイダーで配列の最後に次のものを追加します。

<span><span><?php
</span></span><span>
</span><span><span>namespace RocketCandy<span>\Services\Validation</span>;
</span></span><span>
</span><span><span>use Illuminate<span>\Validation\Validator</span> as IlluminateValidator;
</span></span><span>
</span><span><span>class ValidatorExtended extends IlluminateValidator {
</span></span><span>
</span><span>	<span>private $_custom_messages = array(
</span></span><span>		<span>"alpha_dash_spaces" => "The :attribute may only contain letters, spaces, and dashes.",
</span></span><span>		<span>"alpha_num_spaces" => "The :attribute may only contain letters, numbers, and spaces.",
</span></span><span>	<span>);
</span></span><span>
</span><span>	<span>public function __construct( $translator, $data, $rules, $messages = array(), $customAttributes = array() ) {
</span></span><span>		<span><span>parent::</span>__construct( $translator, $data, $rules, $messages, $customAttributes );
</span></span><span>
</span><span>		<span>$this->_set_custom_stuff();
</span></span><span>	<span>}
</span></span><span>
</span><span>	<span>/**
</span></span><span><span>	 * Setup any customizations etc
</span></span><span><span>	 *
</span></span><span><span>	 * <span>@return <span>void</span>
</span></span></span><span><span>	 */
</span></span><span>	<span>protected function _set_custom_stuff() {
</span></span><span>		<span>//setup our custom error messages
</span></span><span>		<span>$this->setCustomMessages( $this->_custom_messages );
</span></span><span>	<span>}
</span></span><span>
</span><span>	<span>/**
</span></span><span><span>	 * Allow only alphabets, spaces and dashes (hyphens and underscores)
</span></span><span><span>	 *
</span></span><span><span>	 * <span>@param <span>string</span> $attribute
</span></span></span><span><span>	 * <span>@param <span>mixed</span> $value
</span></span></span><span><span>	 * <span>@return <span>bool</span>
</span></span></span><span><span>	 */
</span></span><span>	<span>protected function validateAlphaDashSpaces( $attribute, $value ) {
</span></span><span>		<span>return (bool) preg_match( "/^[A-Za-z\s-_]+$/", $value );
</span></span><span>	<span>}
</span></span><span>
</span><span>	<span>/**
</span></span><span><span>	 * Allow only alphabets, numbers, and spaces
</span></span><span><span>	 *
</span></span><span><span>	 * <span>@param <span>string</span> $attribute
</span></span></span><span><span>	 * <span>@param <span>mixed</span> $value
</span></span></span><span><span>	 * <span>@return <span>bool</span>
</span></span></span><span><span>	 */
</span></span><span>	<span>protected function validateAlphaNumSpaces( $attribute, $value ) {
</span></span><span>		<span>return (bool) preg_match( "/^[A-Za-z0-9\s]+$/", $value );
</span></span><span>	<span>}
</span></span><span>
</span><span><span>}	//end of class
</span></span><span>
</span><span>
</span><span><span>//EOF</span></span>

さて、App/RocketCandy/Services/Validation/TestFormValidator.phpを開き、$ルールプロパティを更新して、次のようになります。

<span>Validator<span>::</span>resolver( function( $translator, $data, $rules, $messages ) {
</span>	<span>return new <span>\RocketCandy\Services\Validation\ValidatorExtended</span>( $translator, $data, $rules, $messages );
</span><span>} );</span>
名前のalpha_dash検証ルールをalpha_dash_spaces、alpha_num_spacesを使用してpin_codeのalpha_numに置き換えました。

今、http:// /dummy/createにナビゲートすると、問題なく名前とピンコードフィールドにスペースを入力できます。

要約

したがって、この2つのパートチュートリアルでは、次のことを學びました

內(nèi)蔵データ検証パッケージを使用して、Laravelのデータを検証します。

オブジェクト指向のアプローチを使用して、データ検証を獨自のサービス(

単一の責任
    達成のロック解除)に抽象化します。
  1. データ検証サービスで使用する獨自のカスタム例外を作成します(True/False Boolean値を使用する代わりに)およびエラーからエラーを保存および取得する方法。
  2. データ検証サービスをコントローラーに挿入して使用します。
  3. カスタム検証ルールを使用してLaravelの検証パッケージを拡張し、サービスプロバイダーを使用して自動ロードします。 腳注
  4. このチュートリアルをポイントまで保持するために、コントローラーに検証サービスを注入し、そこで使用しました?,F(xiàn)実のプロジェクトでは、データの消毒とストレージを処理する他の場所で検証サービスを使用する可能性が高いでしょう。理想的には、コントローラーは脂肪がなく、最小限のコードを持っている必要があります。
  5. 考えがありますか?質問?コメントで発射します。
  6. Laravelデータ検証とカスタムバリデーターについてよく尋ねる質問
  7. データ検証にLaravelを使用することの利點は何ですか?
  8. ??
Laravelは、データ検証のための堅牢で柔軟なシステムを提供する一般的なPHPフレームワークです。データに簡単に適用できるさまざまな検証ルールを提供し、処理される前に必要な標準を満たすようにします。 Laravelの検証システムでは、カスタム検証ルールも許可されているため、データ検証のための獨自の基準を定義する機能が得られます。これは、Laravelの組み込み検証ルールでカバーされていない方法でデータを検証する必要がある場合に特に役立ちます。 Balidator :: Extend Methodを使用してカスタム検証ルールを作成します。このメソッドは、検証ルールの名前と、屬性名、屬性値、および失敗コールバックの3つの引數(shù)を受信する閉鎖の2つのパラメーターを取ります。閉鎖內(nèi)で、カスタム検証ルールのロジックを定義できます。検証が失敗した場合は、適切なエラーメッセージを使用して障害コールバックを呼び出す必要があります。

カスタムルールでLaravelの組み込みの検証ルールを使用できますか?

??

はい、Laravelを使用すると、カスタムルールとともに組み込みの検証ルールを使用できます。これは、検証ロジックで検証ルールを一緒にチェーンすることで実行できます。たとえば、「必須」ルールを使用してフィールドが空でないことを確認し、カスタムルールを使用してデータの形式を検証できます。

Laravelを使用すると、ビューに検証エラーメッセージを簡単に表示できます。検証が失敗すると、Laravelはセッションに保存されているすべての検証エラーを使用して、ユーザーを以前の場所にリダイレクトします。次に、$エラー変數(shù)を使用してビューにこれらのエラーを表示できます。これは、Laravelによってすべてのビューで自動的に利用可能になります。

カスタム検証ルールのエラーメッセージをカスタマイズできますか?はい、Laravelを使用すると、カスタム検証ルールのエラーメッセージをカスタマイズできます。これは、言語ファイルでカスタムメッセージを定義し、検証ロジックでこれらのメッセージを參照することで実行できます。これにより、アプリケーションの特定のニーズに合わせてエラーメッセージを調整する柔軟性が得られます。

laravelで配列を検証するにはどうすればよいですか?

laravelは、「ドット表記」を使用して配列を検証する便利な方法を提供します。検証する配列フィールドを指定してから、検証ルールを適用できます。たとえば、電子メールの配列がある場合は、「電子メール」検証ルールを使用して配列內(nèi)の各電子メールを検証できます。 Laravelを使用すると、條件付き検証ルールを使用できます。これは、他の條件が満たされている場合にのみ、特定の検証ルールを適用できることを意味します。これは、balidatorインスタンスの時々メソッドを使用して実行できます。

laravelでファイルアップロードを検証するにはどうすればよいですか?

laravelは、「ファイル」、 'などのファイルアップロードのいくつかの検証ルールを提供します。畫像 '、「Mime」、および「サイズ」。これらのルールを使用すると、アップロードされたファイルのタイプとサイズを検証し、アプリケーションの要件を満たすようにします。フォームリクエストのカスタム検証ルール。これは、フォームリクエストクラスのルール方法でルールを定義することで実行できます。フォームリクエストデータを検証するときにこれらのルールを使用できます。

laravelで検証障害を処理するにはどうすればよいですか?

LARAVELで検証が失敗した場合、ユーザーを前の場所に自動的にリダイレクトしますすべての検証エラーがセッションに保存されています。その後、これらのエラーをビューで処理し、アプリケーションに適した方法でユーザーに表示できます。

以上がLaravelのデータ検証:正しい方法 - カスタムバリデーターの詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當する法的責任を負いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

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 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHPベースのAPIをバージョン化するためのベストプラクティスは何ですか? PHPベースのAPIをバージョン化するためのベストプラクティスは何ですか? Jun 14, 2025 am 12:27 AM

Toversionaphp Basedificefectivivivity、useurl Basedversioning forclarity-andeaseaseasedease、depateversionedcodetoavoidconflicts、deprecateoldversions withclearcommunication、andconsider-customheadersally whendary.starttheversionionintheurl(e.g。、/api/v

PHPに認証と承認を実裝するにはどうすればよいですか? PHPに認証と承認を実裝するにはどうすればよいですか? Jun 20, 2025 am 01:03 AM

tosecurelyhandLeauthenticationAndauthorizationInizationInization、followTheSteps:1.LwayShashPasswordswithPassword_hash()andverifyusingpassword_verify()、usepreparedStatementStatementStatementStatementStatementStain、andstoreUserdatain $ _SessionAfterlogin.2.implementRementRementRementRementRementRementRementRole

PHPにおける手続き型とオブジェクト指向のプログラミングパラダイムの違いは何ですか? PHPにおける手続き型とオブジェクト指向のプログラミングパラダイムの違いは何ですか? Jun 14, 2025 am 12:25 AM

ProceduralAndObject-OrientedProgramming(OOP)InphpdifferSifically-datability、andDatahandling.1.proceduralprogramsessusessuseSideSized funized、surtableforsmallscript.2.ooporganizescodeIntoclassesandobjects、ModelingReal-worden

PHPの弱い參照(WeakMap)とは何ですか? PHPの弱い參照(WeakMap)とは何ですか? Jun 14, 2025 am 12:25 AM

phpdoesnothaveabuiltinweakmapbutofferswutreferenceforsimilarfunctionality.1.weakreferenceallowsholdingReferences withoutpreventinggarbagecollectrection.2.itisusfulfurcaching、eventlisteners、およびmetadatawithectingovecting objectinimulatea

PHPでファイルアップロードを安全に処理するにはどうすればよいですか? PHPでファイルアップロードを安全に処理するにはどうすればよいですか? Jun 19, 2025 am 01:05 AM

PHPでファイルアップロードを安全に処理するために、コアはファイルタイプを確認し、ファイルの名前を変更し、権限を制限することです。 1。Finfo_File()を使用して実際のMIMEタイプを確認し、Image/JPEGなどの特定のタイプのみが許可されます。 2。uniqid()を使用してランダムファイル名を生成し、非webルートディレクトリに保存します。 3. PHP.iniおよびHTMLフォームを介してファイルサイズを制限し、ディレクトリ権限を0755に設定します。 4. Clamavを使用してマルウェアをスキャンしてセキュリティを強化します。これらの手順は、セキュリティの脆弱性を効果的に防止し、ファイルのアップロードプロセスが安全で信頼性が高いことを確認します。

PHPのNOSQLデータベース(Mongodb、Redisなど)とどのように対話できますか? PHPのNOSQLデータベース(Mongodb、Redisなど)とどのように対話できますか? Jun 19, 2025 am 01:07 AM

はい、PHPは、特定の拡張機能またはライブラリを使用して、MongoDBやRedisなどのNOSQLデータベースと対話できます。まず、MongoDBPHPドライバー(PECLまたはComposerを介してインストール)を使用して、クライアントインスタンスを作成し、データベースとコレクションを操作し、挿入、クエリ、集約、その他の操作をサポートします。第二に、PredisライブラリまたはPhpredis拡張機能を使用してRedisに接続し、キー価値設定と取得を実行し、高性能シナリオにPhpredisを推奨しますが、Predisは迅速な展開に便利です。どちらも生産環(huán)境に適しており、十分に文書化されています。

PHPの==(ゆるい比較)と===(厳密な比較)の違いは何ですか? PHPの==(ゆるい比較)と===(厳密な比較)の違いは何ですか? Jun 19, 2025 am 01:07 AM

PHPでは、==と==の主な違いは、タイプチェックの厳格さです。 ==タイプ変換は比較の前に実行されます。たとえば、5 == "5"はtrueを返します。===リクエストは、trueが返される前に値とタイプが同じであることを要求します。たとえば、5 === "5"はfalseを返します。使用シナリオでは、===はより安全で、最初に使用する必要があります。==は、タイプ変換が必要な場合にのみ使用されます。

PHP(、 - 、 *、 /、%)で算術操作を実行するにはどうすればよいですか? PHP(、 - 、 *、 /、%)で算術操作を実行するにはどうすればよいですか? Jun 19, 2025 pm 05:13 PM

PHPで基本的な數(shù)學操作を使用する方法は次のとおりです。1。追加標識は、整數(shù)と浮動小數(shù)點數(shù)をサポートし、変數(shù)にも使用できます。文字列番號は自動的に変換されますが、依存関係には推奨されません。 2。減算標識の使用 - 標識、変數(shù)は同じであり、タイプ変換も適用されます。 3.乗算サインは、數(shù)字や類似の文字列に適した標識を使用します。 4.分割はゼロで割らないようにする必要がある分割 /標識を使用し、結果は浮動小數(shù)點數(shù)である可能性があることに注意してください。 5.モジュラス標識を採取することは、奇妙な數(shù)と偶數(shù)を判斷するために使用でき、負の數(shù)を処理する場合、殘りの兆候は配當と一致しています。これらの演算子を正しく使用するための鍵は、データ型が明確であり、境界の狀況がうまく処理されるようにすることです。

See all articles