खोज…


पैरामीटर

पैरामीटर विवरण
अपेक्षित क्षेत्र की आवश्यकता है
कभी कभी किसी फ़ील्ड के विरुद्ध सत्यापन जाँच तभी करें जब वह फ़ील्ड इनपुट ऐरे में मौजूद हो
ईमेल इनपुट एक वैध ईमेल है
अधिकतम मूल्य इनपुट मूल्य अधिकतम मूल्य से नीचे होना चाहिए
अद्वितीय: db_table_name प्रदत्त डेटाबेस तालिका नाम में इनपुट मान अद्वितीय होना चाहिए
स्वीकार किए जाते हैं टीओएस की जाँच के लिए हां / ऑन / 1 सच, उपयोगी है
active_url Checkdnsrr के अनुसार एक मान्य URL होना चाहिए
बाद : तारीख सत्यापन के तहत फ़ील्ड को दी गई तारीख के बाद एक मूल्य प्रदान करना होगा
अल्फा सत्यापन के तहत क्षेत्र पूरी तरह से वर्णमाला वर्ण होना चाहिए।
alpha_dash सत्यापन के अंतर्गत क्षेत्र में अल्फा-न्यूमेरिक वर्ण, साथ ही डैश और अंडरस्कोर हो सकते हैं।
alpha_num सत्यापन के तहत क्षेत्र पूरी तरह से अल्फा-न्यूमेरिक वर्ण होना चाहिए।
सरणी एक PHP सरणी होना चाहिए
इससे पहले : तारीख दिए गए दिनांक के तहत फ़ील्ड का मान होना चाहिए
के बीच: न्यूनतम, अधिकतम इनपुट मान न्यूनतम (न्यूनतम) और अधिकतम (अधिकतम) मान के बीच होना चाहिए
बूलियन सत्यापन के तहत क्षेत्र को बूलियन के रूप में डालने में सक्षम होना चाहिए। स्वीकृत इनपुट true , false , 1 , 0 , "1" और "0"
की पुष्टि की सत्यापन के अंतर्गत फ़ील्ड में foo_confirmation का मिलान फ़ील्ड होना चाहिए। उदाहरण के लिए, यदि सत्यापन के तहत फ़ील्ड password , तो इनपुट में एक मिलान password_confirmation फ़ील्ड मौजूद होना चाहिए।
दिनांक सत्यापन के अंतर्गत क्षेत्र स्ट्रेटोटाइम PHP फ़ंक्शन के अनुसार एक वैध तिथि होनी चाहिए।
पूर्णांक सत्यापन के तहत क्षेत्र एक पूर्णांक होना चाहिए
तार सत्यापन के तहत क्षेत्र एक स्ट्रिंग प्रकार होना चाहिए।

मूल उदाहरण

आप validate विधि (आधार नियंत्रक में उपलब्ध, ValidatesRequests विशेषता द्वारा उपलब्ध) का उपयोग करके अनुरोध डेटा को मान्य कर सकते हैं।

यदि नियम पास होते हैं, तो आपका कोड सामान्य रूप से निष्पादित होता रहेगा; हालांकि, यदि सत्यापन विफल हो जाता है, तो सत्यापन त्रुटियों वाली त्रुटि प्रतिक्रिया स्वचालित रूप से वापस भेज दी जाएगी:

  • विशिष्ट HTML फ़ॉर्म अनुरोधों के लिए, उपयोगकर्ता को पिछले पृष्ठ पर पुनर्निर्देशित किया जाएगा, प्रस्तुत फ़ॉर्म को ध्यान में रखते हुए
  • JSON प्रतिक्रिया की अपेक्षा करने वाले अनुरोधों के लिए, कोड 422 के साथ एक HTTP प्रतिक्रिया उत्पन्न होगी

उदाहरण के लिए, अपने UserController , आप store विधि में एक नए उपयोगकर्ता को बचा सकते हैं, जिसे सहेजने से पहले सत्यापन की आवश्यकता होगी।

/**
 * @param  Request  $request
 * @return Response
 */
public function store(Request $request) {
    $this->validate($request, [
        'name' => 'required',
        'email' => 'email|unique:users|max:255'
    ],
    // second array of validation messages can be passed here
    [
        'name.required' => 'Please provide a valid name!',
        'email.required' => 'Please provide a valid email!',
    ]);

    // The validation passed
}

ऊपर दिए गए उदाहरण में, हम पुष्टि करते हैं कि name फ़ील्ड गैर-रिक्त मान के साथ मौजूद है। दूसरे, हम जांचते हैं कि email फ़ील्ड में एक मान्य ई-मेल प्रारूप है, डेटाबेस तालिका "उपयोगकर्ताओं" में अद्वितीय है, और इसमें अधिकतम 255 वर्ण हैं।

| (पाइप) वर्ण एक क्षेत्र के लिए विभिन्न सत्यापन नियमों को जोड़ता है।

कभी-कभी आप पहली मान्यता विफलता के बाद किसी विशेषता पर सत्यापन नियम चलाना बंद करना चाह सकते हैं। ऐसा करने के लिए, bail नियम को विशेषता पर असाइन करें:

$this->validate($request, [
    'name' => 'bail|required',
    'email' => 'email|unique:users|max:255'
]);

उपलब्ध सत्यापन नियमों की पूरी सूची नीचे दिए गए पैरामीटर अनुभाग में पाई जा सकती है।

ऐरे वैलिडेशन

सरणी प्रपत्र इनपुट फ़ील्ड को मान्य करना बहुत सरल है।

मान लीजिए कि आपको किसी दिए गए ऐरे में प्रत्येक नाम, ईमेल और पिता के नाम को मान्य करना है। आप निम्नलिखित कर सकते हैं:

$validator = \Validator::make($request->all(), [
    'name.*'       => 'required', 
    'email.*'      => 'email|unique:users',
    'fatherName.*' => 'required'
]);

if ($validator->fails()) {
    return back()->withInput()->withErrors($validator->errors());
}

लारवेल सत्यापन के लिए डिफ़ॉल्ट संदेश प्रदर्शित करता है। हालाँकि, यदि आप सरणी आधारित फ़ील्ड के लिए कस्टम संदेश चाहते हैं, तो आप निम्न कोड जोड़ सकते हैं:

[
    'name.*' => [
        'required' => 'Name field is required',
    ],
    'email.*' => [
        'unique'   => 'Unique Email is required',
    ],
    'fatherName.*' => [
        'required' => 'Father Name required',
    ]
]

आपका अंतिम कोड इस तरह दिखेगा:

$validator = \Validator::make($request->all(), [
    'name.*'       => 'required', 
    'email.*'      => 'email|unique:users',
    'fatherName.*' => 'required',
], [
    'name.*'       => 'Name Required',
    'email.*'      => 'Unique Email is required',
    'fatherName.*' => 'Father Name required',
]);

if ($validator->fails()) {
    return back()->withInput()->withErrors($validator->errors());
}

अन्य मान्यता अनुमोदन

1) फॉर्म रिक्वेस्ट वैलिडेशन

आप एक "फ़ॉर्म अनुरोध" बना सकते हैं, जो आपके आवेदन में किसी विशेष अनुरोध के लिए प्राधिकरण तर्क, सत्यापन नियम और त्रुटि संदेश पकड़ सकता है।

make:request कारीगर सीएलआई कमांड वर्ग उत्पन्न करता है और इसे app/Http/Requests निर्देशिका में रखता है:

php artisan make:request StoreBlogPostRequest

इस अनुरोध के लिए authorize विधि को प्राधिकरण तर्क के साथ ओवरराइड किया जा सकता है:

public function authorize()
{        
    return $this->user()->can('post');
}

इस अनुरोध के लिए विशिष्ट नियमों के साथ rules विधि को ओवरराइड किया जा सकता है:

public function rules()
{
    return [
        'title' => 'required|unique:posts|max:255',
        'body' => 'required',
    ];
}

इस अनुरोध के लिए विशिष्ट संदेशों के साथ messages पद्धति को ओवरराइड किया जा सकता है:

public function messages()
{
    return [
        'title.required' => 'A title is required',
        'title.unique' => 'There is another post with the same title',
        'title.max' => 'The title may not exceed :max characters',
        'body.required' => 'A message is required',
    ];
}

अनुरोध को मान्य करने के लिए, संबंधित नियंत्रक पद्धति पर विशिष्ट अनुरोध वर्ग को टाइप करें। यदि सत्यापन विफल हो जाता है, तो एक त्रुटि प्रतिक्रिया वापस भेज दी जाएगी।

public function store(StoreBlogPostRequest $request)
{
    // validation passed
}

2) मैन्युअल रूप से वैलिडेटर्स बनाना

अधिक लचीलेपन के लिए, आप मैन्युअल रूप से एक वैलिडेटर बनाना चाहते हैं, और सीधे विफल सत्यापन को संभाल सकते हैं:

<?php    
namespace App\Http\Controllers;

use Validator;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class PostController extends Controller
{
    public function store(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'title' => 'required|unique:posts|max:255',
            'body' => 'required',
        ]);

        if ($validator->fails()) {
            return redirect('post/create')
                    ->withErrors($validator)
                    ->withInput();
        }

        // Store the blog post...
    }
}

2) धाराप्रवाह नियम बनाना

कभी-कभी आपको फ़्लाय पर अद्वितीय नियम बनाने की आवश्यकता हो सकती है, सेवा प्रदाता के भीतर boot() विधि के साथ काम करना शीर्ष पर हो सकता है, जैसा कि लारवेल 5.4 आप Rule वर्ग का उपयोग करके नए नियम धाराप्रवाह बना सकते हैं।

एक उदाहरण के रूप में हम साथ काम करने जा रहे हैं UserRequest के लिए जब आप डालने या उपयोगकर्ता को अपडेट करना चाहते हैं। अब हम चाहते हैं कि एक नाम आवश्यक हो और ईमेल पता अद्वितीय होना चाहिए। unique नियम का उपयोग करने में समस्या यह है कि यदि आप किसी उपयोगकर्ता को संपादित कर रहे हैं, तो वे एक ही ईमेल रख सकते हैं, इसलिए आपको वर्तमान उपयोगकर्ता को नियम से बाहर करने की आवश्यकता है। निम्नलिखित उदाहरण दिखाता है कि आप नए Rule वर्ग का उपयोग करके आसानी से कैसे कर सकते हैं।

<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;

class UserRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules(Request $request)
    {
        $id = $request->route()->getParameter('user');

        return [
            'name'           =>  'required',
            
            // Notice the value is an array and not a string like usual
            'email'         =>  [
                'required',
                Rule::unique('users')->ignore($id)
            ]
        ];
    }
}

POST, PUT, PATCH के लिए सिंगल फॉर्म रिक्वेस्ट क्लास

'फॉर्म रिक्वेस्ट वैलिडेशन' उदाहरण के बाद, वही रिक्वेस्ट क्लास POST , PUT , PATCH लिए इस्तेमाल की जा सकती है ताकि आपको समान / समान मान्यताओं का उपयोग करके दूसरी क्लास न बनानी पड़े। यह काम में आता है यदि आपके पास अपनी तालिका में विशेषताएँ हैं जो अद्वितीय हैं।

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules() {
    switch($this->method()) {
        case 'GET':
        case 'DELETE':
            return [];
        case 'POST':
            return [
                'name'     => 'required|max:75|unique',
                'category' => 'required',
                'price'    => 'required|between:0,1000',
            ];
        case 'PUT':
        case 'PATCH':
            return [
                'name'     => 'required|max:75|unique:product,name,' . $this->product,
                'category' => 'required',
                'price'    => 'required|between:0,1000',
            ];
        default:break;
    }
}

ऊपर से शुरू, हमारा स्विच स्टेटमेंट अनुरोध के प्रकार ( GET , DELETE , POST , PUT , PATCH ) को देखने जा रहा है।

विधि के आधार पर परिभाषित नियमों की सरणी वापस आ जाएगी। यदि आपके पास कोई फ़ील्ड है जो अद्वितीय है, जैसे कि उदाहरण में name फ़ील्ड, तो आपको सत्यापन को अनदेखा करने के लिए एक विशेष आईडी निर्दिष्ट करने की आवश्यकता है।

'field_name' => 'unique:table_name,column_name,' . $idToIgnore`

यदि आपके पास id अलावा किसी अन्य चीज़ पर लेबल वाली प्राथमिक कुंजी है, तो आप चौथे पैरामीटर के रूप में प्राथमिक कुंजी कॉलम निर्दिष्ट करेंगे।

'field_name' => 'unique:table_name,column_name,' . $idToIgnore . ',primary_key_column'

इस उदाहरण में, हम PUT का उपयोग कर रहे हैं और मार्ग ( admin/products/{product} ) को उत्पाद आईडी के मान से पास कर रहे हैं। तो $this->product को अनदेखा करने के लिए id बराबर होगा।

अब आपका PUT|PATCH और POST सत्यापन नियम समान होने की आवश्यकता नहीं है। अपने तर्क को परिभाषित करें जो आपकी आवश्यकताओं के अनुरूप हो। यह तकनीक आपको उन कस्टम संदेशों का पुन: उपयोग करने की अनुमति देती है जिन्हें आपने कस्टम फ़ॉर्म अनुरोध कक्षा में परिभाषित किया हो।

त्रुटि संदेश

त्रुटि संदेशों को अनुकूलित करना

/ /resources/lang/[lang]/validation.php फ़ाइलों में सत्यापनकर्ता द्वारा उपयोग किए जाने वाले त्रुटि संदेश होते हैं। आप उन्हें आवश्यकतानुसार संपादित कर सकते हैं।

उनमें से अधिकांश के पास प्लेसहोल्डर हैं जो त्रुटि संदेश बनाते समय स्वचालित रूप से बदल दिए जाएंगे।

उदाहरण के लिए, 'required' => 'The :attribute field is required.' :attribute प्लेसहोल्डर को फ़ील्ड नाम से बदल दिया जाएगा (वैकल्पिक रूप से, आप प्रत्येक फ़ील्ड के प्रदर्शन मान को उसी फ़ाइल में attributes सरणी में भी कस्टमाइज़ कर सकते हैं)।

उदाहरण

संदेश कॉन्फ़िगरेशन:

'required' => 'Please inform your :attribute.',
//...
'attributes => [
    'email' => 'E-Mail address'
]

नियम:

`email' => `required`

परिणामी त्रुटि संदेश:

"कृपया अपना ई-मेल पता बताएं।"


अनुरोध वर्ग के भीतर त्रुटि संदेशों को अनुकूलित करना

अनुरोध वर्ग के पास एक messages() विधि तक पहुंच है, जिसे एक सरणी वापस आनी चाहिए, इसका उपयोग संदेश को बिना लैंग फ़ाइलों में जाने के लिए ओवरराइड करने के लिए किया जा सकता है। उदाहरण के लिए यदि हमारे पास एक कस्टम file_exists सत्यापन है तो आप नीचे दिए गए संदेशों की तरह कर सकते हैं।

class SampleRequest extends Request {

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'image' =>  'required|file_exists'
        ];
    }

    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    public function messages()
    {
        return [
            'image.file_exists' =>  'That file no longer exists or is invalid'
        ];
    }

}

त्रुटि संदेश प्रदर्शित करना

सत्यापन त्रुटियों को सत्र में फ्लैश किया जाता है, और यह $errors चर में भी उपलब्ध है, जो स्वचालित रूप से सभी विचारों के लिए साझा किया जाता है।

ब्लेड दृश्य में त्रुटियों को प्रदर्शित करने का उदाहरण:

@if (count($errors) > 0)
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

कस्टम सत्यापन नियम

यदि आप एक कस्टम सत्यापन नियम बनाना चाहते हैं, तो आप ऐसा कर सकते हैं उदाहरण के लिए, सेवा प्रदाता के boot विधि में, वैलिडिटी मुखौटा के माध्यम से।

<?php
namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Validator;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        Validator::extend('starts_with', function($attribute, $value, $parameters, $validator) {
            return \Illuminate\Support\Str::startsWith($value, $parameters[0]);
        });

        Validator::replacer('starts_with', function($message, $attribute, $rule, $parameters) {
            return str_replace(':needle', $parameters[0], $message);
        });
    }
}

extend विधि एक स्ट्रिंग लेती है जो नियम और एक फ़ंक्शन का नाम होगा जो बदले में विशेषता के नाम से पारित हो जाएगा, मान मान्य किया जा रहा है, नियम मापदंडों का एक सरणी, और सत्यापनकर्ता उदाहरण, और वापस आना चाहिए या नहीं सत्यापन गुजरता है। इस उदाहरण में, हम जाँच कर रहे हैं कि मान स्ट्रिंग किसी दिए गए विकल्प से शुरू होता है या नहीं।

इस कस्टम नियम के लिए त्रुटि संदेश हमेशा की तरह / /resources/lang/[lang]/validation.php फ़ाइल में सेट किया जा सकता है, और इसमें पैरामीटर मान के लिए प्लेसहोल्डर शामिल हो सकते हैं:

'starts_with' => 'The :attribute must start with :needle.'

replacer विधि एक स्ट्रिंग लेती है जो नियम और एक फ़ंक्शन का नाम है जो बदले में मूल संदेश (प्रतिस्थापित करने से पहले), विशेषता का नाम, नियम का नाम, और नियम मापदंडों की एक सरणी, आदि पारित कर देगा। और आवश्यकतानुसार प्लेसहोल्डर्स को बदलने के बाद संदेश वापस करना चाहिए।

इस नियम का किसी अन्य के रूप में उपयोग करें:

$this->validate($request, [
    'phone_number' => 'required|starts_with:+'
]);


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow