2015-02-12 10 views
6

मैं लार्वेल में यूआरएल मान्य करना चाहता हूं। मेरे नियमों मेंलार्वेल यूआरएल सत्यापन umlauts

"url" => "required|url" 

यह बहुत अच्छा काम कर रहा है। लेकिन जब कोई उपयोगकर्ता उमोट्स के साथ यूआरएल सबमिट करता है, नियम जांच हमेशा विफल हो जाएगी।

कोर जैसे öäü आदि .. जर्मन डोमेन में मान्य हैं। क्या यूआरएल में इन वर्णों को स्वीकार करने के लिए लार्वेल में कोई रास्ता है?

+0

एकमात्र चीज जिसे मैं सोच सकता हूं वह रेगेक्स का उपयोग कर एक कस्टम नियम लिखना है, या आप यह जांच सकते हैं कि यूआरएल नियम ढांचे में कैसे काम करता है और इसे अपने विस्तारित करने के अपने संस्करण को लागू करें? – haakym

+2

एक कस्टम सत्यापनकर्ता लिखने के अलावा, एक कार्यवाही वैध होने से पहले umlauts str_replace करने के लिए हो सकता है। str_replace (['ä', 'ö', 'ü'], ['ae', 'oe', 'ue'], $ request-> url) – baao

उत्तर

5

लार्वेल filter_var()FILTER_VALIADTE_URL विकल्प के साथ उपयोग करता है जो उमलॉट्स की अनुमति नहीं देता है। आप एक कस्टम सत्यापनकर्ता के साथ संयोजन में एक कस्टम सत्यापनकर्ता लिख ​​सकते हैं या regex सत्यापन नियम का उपयोग कर सकते हैं। बस

"url" => array("required", "regex:".$regex) 

या, जैसा कि @michael बताते हैं,: मुझे यकीन है कि आप एक here

"url" => "required|regex:".$regex 

मिल जाएगा या बेहतर रूप में सरणी विशेष वर्ण के साथ समस्याओं से बचने के लिए नियमों को निर्दिष्ट कर रहा हूँ प्रमाणीकरण से पहले उमलों को प्रतिस्थापित करें। मुझे सही तरीके से की ओर इशारा करते के लिए

$input = Input::all(); 
$validationInput = $input; 
$validationInput['url'] = str_replace(['ä','ö','ü'], ['ae','oe','ue'], $validationInput['url']); 
$validator = Validator::make(
    $validationInput, 
    $rules 
); 
if($validator->passes()){ 
    Model::create($input); // don't use the manipulated $validationInput! 
} 
4

धन्यवाद @michael और @lukasgeiter: बस सुनिश्चित करें कि आप बाद में असली बचाने बनाते हैं। मैंने किसी के पास एक ही समस्या होने पर, मेरा समाधान पोस्ट करने का निर्णय लिया है।

मैं की तरह एक कस्टम सत्यापनकर्ता बनाया है:

Validator::extend('german_url', function($attribute, $value, $parameters) { 
     $url = str_replace(["ä","ö","ü"], ["ae", "oe", "ue"], $value); 
     return filter_var($url, FILTER_VALIDATE_URL); 
    }); 

मेरे नियम अब होते हैं:

"url" => "required|german_url, 

इसके अलावा अपने validation.php फ़ाइल

"german_url"   => ":attribute is not a valid URL", 
लिए नियम जोड़ने के लिए भूल नहीं है
+1

ऐसा करने का यह एक अच्छा तरीका प्रतीत होता है! – baao

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