ホームページ  >  記事  >  PHPフレームワーク  >  中国語のlaravel変更検証プロンプト

中国語のlaravel変更検証プロンプト

WBOY
WBOYオリジナル
2023-05-29 10:20:081047ブラウズ

Laravel は、オープンソースの PHP Web アプリケーション フレームワークであり、簡潔なコード、理解しやすく学習しやすい、革新性に満ちているという特徴があるため、ますます多くの開発者に歓迎されています。その中でも、検証は Laravel フレームワークの非常に重要な部分であり、開発者がユーザーによって送信されたフォーム データを検証し、保護するのに役立ちます。ただし、Laravel のデフォルトの検証プロンプト情報はすべて英語であり、中国語のサイトで使用するには不便です。次に、Laravel フレームワークの検証プロンプト情報を中国語に変更する方法について説明します。

0. はじめに

正式な変更作業を開始する前に、いくつかの概念を明確にする必要があります。

まず、Laravel フレームワークのデフォルトのバリデーターは IlluminateValidationValidator です。

2 番目に、Symfony フレームワークのバリデーターコンポーネントは、Laravel フレームワークでデフォルトで使用されます。

第三に、Laravel フレームワーク自体は、バリデーターのメッセージ配列の変更、言語パックの使用など、検証プロンプト情報を変更するためのさまざまな方法を提供します。

1. バリデーターのメッセージ配列を変更する

Laravel フレームワークでは、すべての検証プロンプト情報を保存する Validator クラスにメッセージ配列があります。配列を変更して、検証プロンプト情報を変更します。以下はサンプル コードです:

$validator = Validator::make($request->all(), [
    'name' => 'required|max:255',
    'email' => 'required|email|unique:users,email',
    'password' => 'required|confirmed|min:6',
]);

$validator->messages()->add(
    'email.unique', '该邮箱已被注册,请使用其他邮箱。'
);

上記のコードでは、Validator::make メソッドを使用してバリデータを作成し、3 つの検証ルールを設定します: 名前は必須で、長さは 255 文字を超えてはなりません; 電子メールは必須であり、有効な電子メール アドレスである必要があり、ユーザー テーブル内で一意である必要があります。パスワードは必須で、パスワードの確認が必要で、長さは 6 文字以上である必要があります。次に、 $validator->messages()->add メソッドを呼び出して新しいプロンプト メッセージを追加し、電子メール フィールドに固有の検証ルールが失敗した場合に、「電子メール アドレスが登録されました。よろしくお願いします」というプロンプトを表示するように指定しました。他の電子メール アドレスを使用してください。」 このようにして、検証プロンプト情報を柔軟に変更できます。

このメソッドを使用して変更されたプロンプト情報は、現在のバリデーターが作成されたときにのみ有効になることに注意してください。すべてのバリデーターに対して有効にする必要がある場合は、各バリデーターに追加する必要があります。

2. 言語パックを使用する

Validator でメッセージ配列を直接変更することに加えて、Laravel には、言語パックを使用する、検証プロンプト情報を変更する別の便利な方法も用意されています。 Laravel フレームワークは、英語、スペイン語、フランス語、ドイツ語、日本語、中国語などを含む複数の言語パッケージをデフォルトで提供します。言語パック内で対応する確認プロンプト情報を見つけて変更できます。

Laravel での言語パックの使用は非常に簡単で、resources/lang ディレクトリに対応する言語パック フォルダーを作成するだけで、検証プロンプト情報の変更を開始できます。たとえば、検証プロンプト情報を中国語に変更する必要がある場合は、resources/lang ディレクトリに zh-CN フォルダーを作成し、このフォルダーに validation.php ファイルを作成して、変更した検証プロンプト情報を書き込む必要があります。このファイルに移動します。サンプル コードは次のとおりです。

<?php
// resources/lang/zh-CN/validation.php

return [
    'required' => ' :attribute 为必填项。',
    'max' => [
        'numeric' => ' :attribute 不能大于 :max。',
        'file' => ' :attribute 不能大于 :max kb。',
        'string' => ' :attribute 不能超过 :max 个字符。',
        'array' => ' :attribute 不能超过 :max 个项。',
    ],
    'email' => ' :attribute 必须为合法的邮箱地址。',
    'unique' => ' :attribute 已存在,请使用其他 :attribute。',
    'confirmed' => '两次输入的 :attribute 不一致。',
];

上記のコードでは、required や max などの複数の検証ルールのプロンプト情報を定義します。この情報は、ユーザーが送信したフォームデータを検証し、検証が失敗した場合にプロンプ​​トを表示するために Laravel フレームワークで使用されます。このメソッドは、各 Validator オブジェクトに検証プロンプト情報を追加せずに、サイト全体で検証プロンプト情報を変更する場合により適しています。

3. Symfony 検証コンポーネントの翻訳

上記の 2 つの方法に加えて、Symfony 検証コンポーネントには組み込みの翻訳機能も提供されており、この機能を使用して検証プロンプトを翻訳できます。 Laravelフレームワークの情報は中国語に翻訳されます。

Symfony 検証コンポーネントの翻訳機能を使用するには、まず次のように symfony/translation コンポーネントをインストールする必要があります:

composer require symfony/translation

次に、Laravel フレームワークでトランスレータをセットアップする必要があります。 、AppServiceProvider クラス内 次のコードをブート メソッドに追加します。

use IlluminateSupportFacadesLang;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        $this->app->singleton('translator', function($app){
            $loader = new SymfonyComponentTranslationLoaderArrayLoader;
            $translator = new SymfonyComponentTranslationTranslator('zh');
            $translator->addLoader('array', $loader);
            $translator->addResource('array', require __DIR__ . '/../vendor/symfony/validator/Resources/translations/validators.zh.xlf', 'zh');
            $loader->load($this->getTranslatorMessages());

            return new IlluminateTranslationTranslator($translator);
        });
    }

    public function getTranslatorMessages()
    {
        $messages = [
            'required' => ':attribute 为必填项。',
            'max' => [
                'numeric' => ':attribute 不能大于 :max。',
            ],
            'email' => ':attribute 必须为合法的邮箱地址。',
            'unique' => ':attribute 已存在,请使用其他 :attribute。',
            'confirmed' => '两次输入的 :attribute 不一致。',
        ];

        return $messages;
    }
}

上記のコードでは、AppServiceProvider の Symfony 検証コンポーネントによって提供される変換関数を使用します。その中で、トランスレーターの言語を中国語に設定し、Symfony 検証コンポーネントに付属する翻訳ファイル validators.zh.xlf をロードしました。 getTranslatorMessages メソッドでは、翻訳する必要がある検証プロンプト メッセージを定義します。このようにして、Laravel フレームワークがフォームデータを検証するときに、Symfony 翻訳コンポーネントは英語の検証プロンプト情報を自動的に中国語に翻訳します。

この方法はより面倒であり、新しいコンポーネントをインストールし、Laravel フレームワークの ServiceProvider クラスを変更する必要があることに注意してください。

4. 概要

上記は、Validator のメッセージ配列の直接変更、言語パックの使用、Symfony 検証コンポーネントの翻訳など、Laravel フレームワーク検証プロンプト情報を変更する方法です。さまざまなシナリオに適した方法が異なるため、自分のニーズに応じて選択できます。

実際の開発では、カスタマイズされた検証プロンプト情報を Validator で追加し、それを言語パックでカバーして調整するなど、通常、上記の方法を組み合わせて使用​​して、洗練された制御を確保し、簡単にサイト全体を管理および保守します。

以上が中国語のlaravel変更検証プロンプトの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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