2017-06-28 60 views
5

मेरे पास इनपुट $data =['identifier' = 'xxxxxxxxxx']; है, और encrypt($data['identifier']) को तालिका info प्राथमिक id कॉलम पर सहेजना चाहते हैं।कस्टम सत्यापन नियम में लार्वा के सत्यापन नियम का उपयोग कैसे करें?

मुझे इसे सहेजने से पहले सत्यापित करना होगा। नियम unique:info, id यहां उपयुक्त नहीं है, इसलिए मैं एक कस्टम सत्यापन नियम लिखना चाहता हूं। और कस्टम सत्यापन नियम में, मैं पहले encrypt() मान पहले, फिर unique सत्यापन नियम का उपयोग करें।

मुझे पता है कि कस्टम सत्यापन नियम कैसे लिखना है, लेकिन मेरे कस्टम सत्यापन नियम में unique सत्यापन नियम का उपयोग कैसे करें?

+1

https://laravel.com/docs/5.4/validation#custom-validation-rules पर्याप्त नहीं है? – ceejayoz

+0

@ceejayoz कृपया मेरे प्रश्न को और पढ़ें। यहां मैं कस्टम सत्यापन नियम नहीं लिख रहा हूं। मैं अद्वितीय नियम को सीमित करना चाहता हूं। –

+0

'आईडी' का प्रारंभिक मूल्य क्या है? क्या यह 'int' करता है तो यह एन्क्रिप्ट किया जाएगा ?! – SaidbakR

उत्तर

2

नियम "अद्वितीय" और "मौजूद है" में इस विधि लिख सकते हैं DatabasePresenceVerifier वर्ग का उपयोग करें। इसलिए, आपको वास्तव में अद्वितीय नियम का विस्तार करने की आवश्यकता नहीं है, बस इस उपस्थिति सत्यापनकर्ता तक पहुंचें। उदाहरण के लिए:

Validator::extend('encrypted_unique', function ($attribute, $value, $parameters, $validator) { 
    list ($table, $column, $ignore_id) = $parameters; // or hard-coded if fixed 
    $count = $validator->getPresenceVerifier()->getCount($table, $column, encrypt($value), $ignore_id); 
    return $count === 0; 
}); 

तो फिर तुम हमेशा की तरह के रूप में उपयोग कर सकते हैं:

'identifier' => "encrypted_unique:table,column,$this_id" 
1

मान लीजिए आप एक ModuleRequest कि आपके आदानों की पुष्टि करता है, तो आप इस वर्ग

protected function validationData() 
{ 
    $all = parent::validationData(); 
    $all['email'] = encrypt($all['email']); 
    return $all; 

} 
+0

मुझे यह काम पता है। मैं अपने प्रश्न में बताए गए सत्यापन नियम में इस 'एन्क्रिप्ट() 'का उपयोग करना चाहता हूं। –

संबंधित मुद्दे