#やりたいこと
required_if等で 「◯◯が▲▲の場合、□□も指定してください」で、▲▲部分が値で直接表示されるのでカスタムしたい。
ただし、Validatorファサードでカスタムはしたくない。
#想定
userテーブルにroleカラムがあり、roleが1(承認者)の場合は承認対象ページも入力させたい。
#コード
nameにprefixでテーブル名をつけいている場合。
app/Http/Requests/UserRequest.php
public function rules()
{
return [
'user.role' => 'required',
'user.authority_target' => 'required_if:user.role,1',
];
}
resources/lang/ja/validation.php
<?php
return [
// 〜省略〜
'values' => [
'user' => [
'role' => [
'1' => '承認者',
]
],
// 下記だと読み込まれない
//'user.role' => [
// '1' => '承認者',
//],
]
];
#蛇足
上記の設定ファイル読み込んでいる部分
vendor/laravel/framework/src/Illuminate/Validation/Concerns/FormatsMessages.php
// 304行目〜
/**
* Get the displayable name of the value.
*
* @param string $attribute
* @param mixed $value
* @return string
*/
public function getDisplayableValue($attribute, $value)
{
if (isset($this->customValues[$attribute][$value])) {
return $this->customValues[$attribute][$value];
}
$key = "validation.values.{$attribute}.{$value}";
if (($line = $this->translator->trans($key)) !== $key) {
return $line;
}
return $value;
}
間違いや良き方法ありましたら、コメントください。
以上。