底辺SE奮闘記

年収300万SEブログ

【PHP5.6・Laravel5.4】バリデーション min, sizeが正常に動かない!って時に

環境

  • PHP 5.6
  • Laravel 5.4

現象

下記コードはうまく動きません。いつでもバリデーションをパスします。

<?php

use Validator;

//中略

$input = [
    "testNo" => $testNo //何かしらの数値変数
];

$rule = [
    "testNo" => "min:1"
];

$message = [
    "testNo.min" => "Min Error."
];

Validator::make($input, $rule, $message)->validate();

正確には下記の通りにする必要があります。

<?php

use Validator;

//中略

$input = [
    "testNo" => $testNo //何かしらの数値変数
];

$rule = [
    "testNo" => "numeric|min:1" // <=fixed
];

$message = [
    "testNo.min" => "Min Error."
];

Validator::make($input, $rule, $message)->validate();

バリデーターに「これは数値ですよ」と教えてあげるようなイメージですね。たぶんstring, array, fileいずれにしても言えることかと思います。