我有一個使用規則物件制作的自定義規則,它作業正常,除了一件事,它沒有選擇我在組件中為它創建的自定義驗證訊息,而是選擇在驗證中分配給它的任何內容.php 檔案或來自已翻譯的validation.php 檔案的等效翻譯。其他非自定義規則與相同欄位的自定義訊息按預期作業。
組件:
public function rules()
{
return[
'topic' => ['required', 'string', 'max:250', 'min:5', new Profane],
'name' => ['required', 'string', 'max:250'],
'email' => ['required', 'email:rfc,dns', 'max:250']
];
}
protected $messages = [
'topic.required' => 'some message',
'topic.max' => 'some message',
'topic.min' => 'some message',
--> 'topic.profane' => 'some message',
'name.required' => 'some message',
'name.max' => 'some message.',
'email.email' => 'some message',
'email.required' => 'some message',
];
規則物件:
public function passes($attribute, $value)
{
$profane = ProfaneWord::all();
$words = $profane->pluck('word');
foreach ($words as $word)
{
if (stripos($value, $word) !== false) return false;
}
return true;
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return trans('validation.profane');
}
uj5u.com熱心網友回復:
使用自定義規則時,這目前似乎不可能。訊息源中的問題只能從message()方法中檢索。但是,由于驗證規則是您自己的類,您可以隨時更改它:
private $message;
public __construct($message = null) {
$this->message = $message;
}
public function passes($attribute, $value)
{
$profane = ProfaneWord::all();
$words = $profane->pluck('word');
foreach ($words as $word)
{
if (stripos($value, $word) !== false) return false;
}
return true;
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return $this->message??trans('validation.profane');
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/335287.html
