Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

Randolf's avatar

Limitation of rules in Custom Request validation

  • Laravel Version: 5.5.15
  • PHP Version: 7.0.9
  • Database Driver & Version: No matters
  • Enviroment: Windows 7 + XAMPP Version 7.0.9

Description:

Hi, I have problems validating form fields with a custom request. If the form has more than 15 fields, the validation simply breaks, and reload the page without errors. If has less, he page it´s reload with all errors correctly. And, If the route only contains the validator... works well again.

Steps To Reproduce:

Routes (web.php)

Route::view('/test_validation', 'validation.index');
Route::post('/test_validation', 'ValidationController@testValidation')->name('testvalidation');

View (validation\index.blade.php)

@extends('layouts.app')

@section('content')
    <div class="container">

        @if($errors->any())
            <div class="row">
                <div class="col-md-8 col-md-offset-2">
                    <div class="alert alert-danger" role="alert">
                        <p><strong>There are errors:</strong></p>
                        <ul>
                            @foreach($errors->all() as $error)
                                <li>{{$error}}</li>
                            @endforeach
                        </ul>
                    </div>
                </div>
            </div>
        @endif

        <div class="row">
            <div class="col-md-10 col-md-offset-1">
                {{ Form::open(['route' => ['testvalidation'], 'method' => 'POST']) }}
                <div class="panel panel-default">
                    <div class="panel-heading">DATOS</div>

                    <div class="panel-body">

                        @for ($i = 1; $i <= 20; $i++)
                            <div class="col-md-2 {{ $errors->has('field_' . $i) ? ' has-error' : '' }}">
                                {{ Form::label('field_' . $i, 'Field ' . $i, ['class' => 'control-label']) }}
                                {{ Form::text('field_' . $i, null, ['class' => 'form-control']) }}
                            </div>
                        @endfor

                    </div>
                </div>
                <div class="row text-center">
                    <div class="col-md-12 text-center">
                        {{ Form::submit('Validate', ['class' => 'btn btn-primary']) }}
                    </div>
                </div>
                {{ Form::close() }}
            </div>
        </div>
    </div>
@endsection

Requests\ExampleRequest.php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class ExampleRequest extends FormRequest
{
    public function rules()
    {
        return [
            'field_1' => 'required',
            'field_2' => 'required',
            'field_3' => 'required',
            'field_4' => 'required',
            'field_5' => 'required',
            'field_6' => 'required',
            'field_7' => 'required',
            'field_8' => 'required',
            'field_9' => 'required',
            'field_10' => 'required',
            'field_11' => 'required',
            'field_12' => 'required',
            'field_13' => 'required',
            'field_14' => 'required',
            'field_15' => 'required',
            'field_16' => 'required',
            'field_17' => 'required',
            'field_18' => 'required',
            'field_19' => 'required',
            'field_20' => 'required',
        ];
    }
}

ValidationController@testValidation

use App\Http\Requests\ExampleRequest;
public function testValidation(ExampleRequest $request)
{
    dd($request->all());
}

If I comment rules from field_16, validation works well. Example

If I use the validator directly with a route closure, works well validating all the fields: Example

But, with all the rules with the Custom Request and the controller, validation breaks and the page it´s reload without any error and the form empty without old inputs...

Any help?? Thanks!

0 likes
2 replies
Randolf's avatar

Tested in a fresh installation. All it´s validated as expected... I don´t have idea what it´s happening with my installation...

More tests...

ValidationController@testValidation

// WORKS correct and return message errors.
public function testValidation(Request $request)
{
    return Validator::make($request->all(),[
            'field_1' => 'required',
            'field_2' => 'required',
            'field_3' => 'required',
            'field_4' => 'required',
            'field_5' => 'required',
            'field_6' => 'required',
            'field_7' => 'required',
            'field_8' => 'required',
            'field_9' => 'required',
            'field_10' => 'required',
            'field_11' => 'required',
            'field_12' => 'required',
            'field_13' => 'required',
            'field_14' => 'required',
            'field_15' => 'required',
            'field_16' => 'required',
            'field_17' => 'required',
            'field_18' => 'required',
            'field_19' => 'required',
            'field_20' => 'required',
        ]
    )->errors()->all();
}

ValidationController@testValidation

// FAIL, and return to the view without any error
public function testValidation(Request $request)
{
    Validator::make($request->all(),[
            'field_1' => 'required',
            'field_2' => 'required',
            'field_3' => 'required',
            'field_4' => 'required',
            'field_5' => 'required',
            'field_6' => 'required',
            'field_7' => 'required',
            'field_8' => 'required',
            'field_9' => 'required',
            'field_10' => 'required',
            'field_11' => 'required',
            'field_12' => 'required',
            'field_13' => 'required',
            'field_14' => 'required',
            'field_15' => 'required',
            'field_16' => 'required',
            'field_17' => 'required',
            'field_18' => 'required',
            'field_19' => 'required',
            'field_20' => 'required',
        ]
    )->validate();
}

Does anyone have any idea where I can investigate? :confused:

Please or to participate in this conversation.