首頁  >  文章  >  php框架  >  laravel修改驗證提示中文

laravel修改驗證提示中文

WBOY
WBOY原創
2023-05-29 10:20:081046瀏覽

Laravel是一款開源的PHP Web應用程式框架,具有程式碼簡潔、易於理解和學習、充滿創新的特點,因此受到越來越多開發者的歡迎。其中,驗證是Laravel框架中非常重要的一部分,它幫助開發者驗證和保護使用者提交的表單資料。但是,Laravel預設的驗證提示訊息都是英文的,不便於中文網站的使用,接下來,我們就來探討如何將Laravel框架的驗證提示訊息修改成中文。

0、引言

在開始正式的修改工作之前,我們需要先明確幾個概念。

第一,Laravel框架預設的驗證器是IlluminateValidationValidator。

第二,Laravel框架中預設使用了Symfony框架的validator元件。

第三,Laravel框架本身提供了多種修改驗證提示資訊的方法,例如修改驗證器中的messages陣列、使用語言套件等。

1、修改驗證器中的messages數組

在Laravel框架中,Validator類別中有一個messages數組,它儲存所有的驗證提示訊息,在使用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方法建立了一個驗證器,並設定了三個驗證規則:name必填、長度不超過255個字元; email必填、必須為合法的郵箱地址、在users表中唯一;password必填、確認密碼、長度不少於6個字元。然後,我們透過呼叫$validator->messages()->add方法來新增了一個新的提示訊息,指定了當email欄位的驗證規則unique失敗時,應該提示「該郵箱已被註冊,請使用其他郵箱。」這樣,我們就可以靈活地修改驗證提示資訊了。

要注意的是,使用這種方法修改的提示訊息只會在建立目前驗證器時生效,如果需要對所有的驗證器都生效,則需要在每個驗證器中都添加一遍。

2、使用語言包

除了在Validator中直接修改messages數組,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驗證元件的翻譯

除了上述兩種方法外,Symfony驗證元件也提供了內建翻譯的功能,我們可以使用這個功能將Laravel框架中的驗證提示訊息翻譯成中文。

要使用Symfony驗證元件的翻譯功能,我們首先需要安裝symfony/translation元件,方法如下:

composer require symfony/translation

然後,我們需要在Laravel框架中設定翻譯器,在AppServiceProvider類別的boot方法中加入以下程式碼:

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、總結

以上就是修改Laravel框架驗證提示訊息的方法,包括在Validator中直接修改messages陣列、使用語言套件、Symfony驗證元件的翻譯等方法。不同的方法適用於不同的場景,可以根據自己的需求進行選擇。

在實際開發中,我們通常會結合使用上述多種方法,例如在Validator中添加自定義的驗證提示信息,並在語言包中進行覆蓋和調整,這樣既可以保證精細化的控制,又可以方便地進行全站的管理與維護。

以上是laravel修改驗證提示中文的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn