5

My ajax script send array like this: This array belong to Input::get('questions')

 Array
(
    [0] => Array
        (
            [name] => fields[]
            [value] => test1
        )

    [1] => Array
        (
            [name] => fields[]
            [value] => test2
        )

)

In html part user can add multiple fields.

Could you help me with I need something like this:

           $inputs = array(
                'fields'    => Input::get('questions')
            );

            $rules = array(
                'fields'    => 'required'
            );
            $validator = Validator::make($inputs,$rules);

                if($validator -> fails()){
                    print_r($validator -> messages() ->all());
                }else{
                    return 'success';
                }

2 Answers 2

3

Simple: validate each question separately using a for-each:

// First, your 'question' input var is already an array, so just get it
$questions = Input::get('questions');

// Define the rules for *each* question
$rules = [
    'fields' => 'required'
];

// Iterate and validate each question
foreach ($questions as $question)
{
    $validator = Validator::make( $question, $rules );

    if ($validator->fails()) return $validator->messages()->all();
}

return 'success';
Sign up to request clarification or add additional context in comments.

Comments

0

Laravel Custom Validation for Array Elements

Open the following file

/resources/lang/en/validation.php

Then custom message add

'numericarray'         => 'The :attribute must be numeric array value.',
'requiredarray'        => 'The :attribute must required all element.',

So that, open the another file

/app/Providers/AppServiceProvider.php

Now replace the boot function code by using following code.

public function boot()
{
    // it is for integer type array checking.
    $this->app['validator']->extend('numericarray', function ($attribute, $value, $parameters)
    {
        foreach ($value as $v) {
            if (!is_int($v)) {
                return false;
            }
        }
        return true;
    });

   // it is for integer type element required.
   $this->app['validator']->extend('requiredarray', function ($attribute, $value, $parameters)
    {
        foreach ($value as $v) {
            if(empty($v)){
                return false;
            }
        }
        return true;
    });
}

Now can use requiredarray for array element required. And also use the numericarray for array element integer type checking.

$this->validate($request, [
            'arrayName1' => 'requiredarray',
            'arrayName2' => 'numericarray'
        ]);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.