Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?
Merhaba,

Bildiğiniz üzere laravel validation sınıfı içerisinde array validation ile ilgili bir fonksiyon mevcut değil. Özellikle grup form elementlerinde (kategori checkbox gibi) bu tarz bir numeric doğrulama fonksiyonuna ihtiyaç duyulmaktadır.

Öncelikle /application/libraries dizini altına aşağıdaki kodları validator.php adıyla kaydedin.
class Validator extends Laravel\Validator {

 public function validate_array_numeric($attribute, $value, $parameters){
 $numeric_values = array_filter($value, create_function('$item', 'return (is_numeric($item));'));
 return count($numeric_values) == count($value);
 }

}
Daha sonra application/language/en/validation.php dosyasına aşağıdaki satırı:
"array_numeric" => "The :attribute contains non-numeric values",
Sonra da application/language/tr/validation.php dosyasına aşağıdaki satırı ekleyiniz:
"array_numeric" => ":attribute alanı sayısal olmayan değerler içeriyor",
Daha sonra application/config/application.php içerisindeki aşağıdaki satırı
'Validator' => 'Laravel\\Validator',
Bu şekilde değiştirin:
#'Validator' => 'Laravel\\Validator',
Artık fonksiyonumuzu bir doğrulama kuralı (?) (validation rule) tanımlarken aşağıdaki şekilde kullanabiliriz:
public static $rules = array(
'product_categories'=>'array_numeric'
);
İyi kodlamalar.
8 gün sonra
Teşekkürler, ellerin dert görmesin.
Umarım faydalı olur.... Laravel 4 için request listesine yazdım bakalım umarım bu tarz array validationlar da gelir...
bir yıl sonra
Larave 4 te işlemi nasıl uygularız?
@astald, Laravel 4 için bu genişletme gerekli gibi görünmüyor. Laravel Validatör kurallarından birisinin 'array' kuralı olduğu dikkate alındığında, Validatör genişletmesi yapmaksızın, orijinal sınıfın public metodlarından "each"i kullanarak dizinin elemanları için de kurallar tanımlamak zaten mümkündür.

Örneğin,
Route::get('/eleman', function () {
 $veri = array('liste'=>array(1,'yazi',3, 9));
 $kural = array('liste'=>'array');
 $vala = Validator::make($veri, $kural);

 //array tipindeki "liste" öğesinin elemanları için numerik ve 6'dan küçük kurallar ekliyoruz. 
 $vala->each('liste', array('numeric', 'max:5')); 
 if ($vala->fails()) {
 $mesajlar = $vala->messages();
 return Response::json($mesajlar);
 }
 return "Sorun yok";
});
Çıktısı:
{"liste.1":["The liste.1 must be a number."],"liste.3":["The liste.3 may not be greater than 5."]}
Ellerine sağlık @sergin abi.