Laravelのbooleanのバリデーションは文字列のtrueとfalseは通しません。
The field under validation must be able to be cast as a boolean. Accepted input are
https://laravel.com/docs/9.x/validation#rule-booleantrue
,false
,1
,0
,"1"
, and"0"
.
true, false, 1, 0, "1", "0" が通りますが、
APIのGETなどのパラメータは文字列で渡ってくるため、デフォルトでは"0" / "1"で指定するしかありません。
文字列の"true"と"false"を通すためには、RequestクラスにてprepareForValidation()を使ってバリデーション前に値を加工します。
xxxx_xxxxにはis_targetなど実際にbooleanで受け取りたいパラメータ名を直接いれてください。
protected function prepareForValidation() {
$value = $this->xxxx_xxxx;
# 文字列表現のboolを実際のboolに変換
if ($value === 'false') {
$value = false;
} elseif ($value === 'true') {
$value = true;
}
$this->merge(['xxxx_xxxx' => $value]);
}
これで文字列のtrue / false でも正常に受け取ることができます。
Laravelでbooleanを扱う場合は下記も参考にしてください。