2015-02-12 26 views
6

URL'leri laravel içinde doğrulamak istiyorum. Kurallarım büyük/küçük harfle çalışıyor. Bu tabloyu kapaBu tabloyu aç Ancak, kullanıcı bir URL'yi numaralı URL'lerle gönderdiğinde kural denetimi her zaman başarısız olur.laravel url doğrulama iletileri

Öäü vb. Gibi karakterler Alman Alanlarında geçerlidir. Laravel'de bu karakterleri URL'lerde kabul etmenin bir yolu var mı?

+0

Düşünebildiğim tek şey, regex kullanarak özel bir kural yazmaktır veya URL kuralının çerçevede nasıl çalıştığını kontrol edebilirsiniz. ve kendi versiyonunu uygulayarak genişletiyor musunuz? – haakym

+2

Özel bir doğrulayıcı yazmanın yanı sıra, doğrulamadan önce URL'leri str_replace için bir geçici çözüm olabilir. str_replace (['ä', 'ö', 'ü'], ['ae', 'oe', 'ue'], $ request-> url) – baao

cevap

5

Laravel,numaralı telefonu kullanarak, FILTER_VALIADTE_URL numaralı isteğe uyarlamalara izin vermez. Özel bir doğrulayıcı yazabilir veya normal bir ifade ile birlikte regex doğrulama kuralını kullanabilirsiniz. @michael işaret ettiği gibi,

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

Veya sadece,: Bir here

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

bulmak Ya da daha dizi özel karakterlerle ilgili sorunları önlemek amacıyla kurallar belirtmek gerekir eminim Doğrulamadan önce umlaçları değiştirin. doğru şekilde beni işaret için

$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

Teşekkür @michael ve @lukasgeiter: Sadece gerçek sonradan birini kurtarmak emin olun. Birinin aynı sorunu olması durumunda çözümümüzü göndermeye karar verdim.

Ben gibi özel Validator oluşturduk

:

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

Benim kuralları artık içerir:

Ayrıca
"url" => "required|german_url, 

sizin validation.php dosyası

"german_url"   => ":attribute is not a valid URL", 
için kural eklemek unutmayın
+1

Bunu yapmak için iyi bir yol gibi görünüyor! – baao