Open2

Laravel

suinsuin
function castValidatedData(array $data, Validator $validator)
{
    $rules = $validator->getRules();
    foreach ($rules as $key => $rule) {
        if (\in_array('integer', $rule)) {
            $data[$key] = \intval($data[$key]);
        }
    }
    return $data;
}
suinsuin
<?php

namespace Tests\Unit;

use Illuminate\Translation\ArrayLoader;
use Illuminate\Translation\Translator;
use Illuminate\Validation\Validator;
use PHPUnit\Framework\TestCase;

class ExampleTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function test_example()
    {
        $this->assertTrue(true);
    }

    public function testValidateEmptyStringsAlwaysPasses()
    {
        $trans = $this->getIlluminateArrayTranslator();

        $v = new Validator($trans, ['x' => "100"], ['x' => 'required|integer|min:1|max:100']);
        $data = castValidatedData($v->validated(), $v);

        var_dump($data);
        //=> array(1) {
        //  ["x"]=>
        //  int(100)
        //}
    }

    public function getIlluminateArrayTranslator()
    {
        return new Translator(
            new ArrayLoader, 'en'
        );
    }
}