2015-05-18 30 views
6

Parametre geçerlilik kuralında iletilmek istiyorum.Laravel özel doğrulama - parametreleri alın

Oluşturduğum bazı doğrulama kuralları için, validasyon kuralından parametre alabiliyorum, ancak birkaç kural için bu parametreler alınmıyor.

Ben aşağıdaki kodu kullanıyorum modelde

:

public static $rules_sponsor_event_check = array(
    'sponsor_id' => 'required', 
    'event_id' => 'required|event_sponsor:sponsor_id' 
); 

ValidatorServiceProvider ben aşağıdaki kodu kullanıyorum:

Validator::extend('event_sponsor', function ($attribute, $value, $parameters) { 
     $sponsor_id = Input::get($parameters[0]); 
     $event_sponsor = EventSponsor::whereIdAndEventId($sponsor_id, $value)->count(); 

     if ($event_sponsor == 0) { 
      return false; 
     } else { 
      return true; 
     } 
    }); 

Ama burada sponsor kimliği almanız mümkün değilim

$sponsor_id = Input::get($parameters[0]); 
+0

Parametrenin doğru şekilde iletildiğini kontrol etmek için dd ($ parameters [0]) 'ı deneyin. – lukasgeiter

+0

dd ($ parameters [0]) görüntüleniyor - "sponsor_id" –

cevap

9

Dördüncü olarak tüm doğrulayıcı, extends ile tanımladığınız kapamaya geçirilir. Geçtim girdi adı yok varsa hataları önlemek için burada array_get kullanıyorum arada

Validator::extend('event_sponsor', function ($attribute, $value, $parameters, $validator) { 
    $sponsor_id = array_get($validator->getData(), $parameters[0], null); 
    // ... 
}); 

: Sen doğrulandıktan tüm verileri almak için kullanabilirsiniz.

+1

Aşağıdaki gibi kullandım ama null - $ sponsor_id = array_get ($ validator-> getData(), $ parameters [0], null); dd ($ sponsor_id); - $ validator'unu aşağıdakilere iletmem gerekiyor - $ validator = Validator :: make ($ input, EventSponsor :: $ rules_sponsor_event_check); –

+0

Lütfen '$ validator-> getData() 'ın aslında – lukasgeiter

+0

değerini döndürdüğünü kontrol edin $ validator-> getData() - çalıştı, günümü kurtardığın için teşekkürler. –

0

http://laravel.com/docs/5.0/validation#custom-validation-rules

012: aşağıdakiler

özel doğrulayıcı Kapatma üç argüman alır: $ özelliğin adı doğrulanan, özelliğinin $ değeri ve bir dizi kural geçirilen $ arasında parametreleri.

Neden Input::get($parameters);? $ parametreleri içeriğini kontrol etmelisiniz.

Düzeltme. Tamam Ne yapmaya çalıştığını anladım. Almaya çalıştığınız değer gönderilmiyorsa, girdiden bir şey okumaya devam etmeyeceksiniz. sponsor_id submited nerede

sponsor_id=Input::get($parameters[0]); 

yerlerde çalıştığını Ardından bulacaksınız

dd(Input::all()); 

için bir göz atın.

+0

Parametreler başka bir giriş parametresinin adını tutuyor. OP bunun değerini almak istiyor. – lukasgeiter

+0

$ input = Giriş :: get ($ parameters); dd ($ input); Aryor.php satırında bir Exception - ErrorException atıyor 219: Isset veya boşta geçersiz ofset türü –

+0

Güncellemeyi kontrol edin. –