web-dev-qa-db-ja.com

Laravel)の整数の配列を検証するにはどうすればよいですか?

この$someVar = array(1,2,3,4,5)のような整数の配列があります。 _$someVar_を検証して、すべての要素が数値であることを確認する必要があります。どうすればよいですか?

単一値の変数の場合、検証ルールは次のようになることを知っています$rules = array('someVar'=>'required|numeric')。配列_$someVar_のすべての要素に同じルールを適用するにはどうすればよいですか?

助けてくれてありがとう。

14
Kola
Validator::extend('numericarray', function($attribute, $value, $parameters)
{
    foreach($value as $v) {
         if(!is_int($v)) return false;
    }
    return true;
});

これを使って

$rules = array('someVar'=>'required|numericarray')
16
Issam Zoli

現在laravelには、配列要素に条件を設定するオプションがあります。検証int配列のような単純なもののために独自のバリデーターを作成する必要はありません。これを使用してください(コントローラーで使用する場合)-

$validator = \Validator::make(compact('someVar'), [
    'someVar' => 'required|array',
    'someVar.*' => 'integer'
]);
$this->validateWith($validator);

または

$this->validate($request, [
    'someVar' => 'array',
    'someVar.*' => 'int'
]);
53
Aayush Anand

Laravel 5では、.*を使用して配列内の要素を確認できます。これは、次のことを意味します。

$rules = array('someVar'   => 'required|array',
               'someVar.*' => 'integer')
6
Lars

新しい検証属性を追加することから始めます

Validator::extend('numeric_array', function($attribute, $values, $parameters)
{
    if(! is_array($values)) {
        return false;
    }

    foreach($values as $v) {
        if(! is_numeric($v)) {
            return false;
        }
    }

    return true;
});

属性が配列でない場合、または1つの値が数値でない場合、関数はfalseを返します。次に、「app/lang/en /validation.php」にメッセージを追加します

"numeric_array"        => "The :attribute field should be an array of numeric values",
5
Mateusz Nowak

配列の整数型値チェックのカスタムルールを追加できます

ファイルを開くだけ

/resources/lang/en/validation.php

ファイルの「承認済み」メッセージの前にカスタムメッセージを追加します。

'numericarray'         => 'The :attribute must be numeric array value.',
"accepted"             => "The :attribute must be accepted.",

ファイルを開きます

/app/Providers/AppServiceProvider.php

次に、ブート関数にカスタム検証を追加します。

public function boot()
{

    $this->app['validator']->extend('numericarray', function ($attribute, $value, $parameters)
    {
        foreach ($value as $v) {
            if (!is_int($v)) {
                return false;
            }
        }
        return true;
    });

}

これで、numericarrayを使用して配列の整数型の値をチェックできます。

$this->validate($request, [
            'field_name1' => 'required',
            'field_name2' => 'numericarray'
        ]);
2
Majbah Habib

AppServiceProvider.php

Validator::extend('integer_array', function($attribute, $value, $parameters)
{
    return Assert::isIntegerArray($value);
});

Assert.php

/**
 * Checks wheter value is integer array or not
 * @param $value
 * @return bool
 */
public static function isIntegerArray($value){
    if(!is_array($value)){
        return false;
    }

    foreach($value as $element){
        if(!is_int($element)){
            return false;
        }
    }

    return true;
}
1
Farid Movsumov

値が配列であることを確認する「配列」検証のみがありますが、特定のケースでは、カスタムフィルターを作成する必要があります。

Laravel 3: http://three.laravel.com/docs/validation#custom-validation-rules

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

1
Ruke