Laravel 9 validation custom message title

653 Views Asked by At

When you validate user input like so :

$request->validate([
    'ref' => 'required',
    'name' => 'required'
]);

You can customize the error message for the field :

$request->validate([
    'ref' => 'required',
    'name' => 'required'
], [
    'ref.required' => 'Custom Message for This Field',
    'name.required' => 'Custom Message for This Field'
]);

And the result would be like so :

{
    "message": "Custom Message for This Field (and 1 more error).",
    "errors": {
        "ref": [
            "Custom Message for This Field"
        ],
        "name": [
            "Custom Message for This Field"
        ]
    }
}

But what I need here is to customize the "message": "Custom Message for This Field (and 1 more error).". How do I do this?

2

There are 2 best solutions below

3
Ramil Huseynov On

you may be override input key name 

"name": [
            "Custom Message for This Field"
        ]

lang/en/validation.php

'attributes' => [
        'name' => 'custom name'
    ]

0
Lợi Phạm On

I think you should add the following in

/app/Exceptions/Handler.php

It will work as per your request

/**
  * Render errors
  * @param \Illuminate\Http\Request $request
  * @param Throwable                $exception
  * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse|\Symfony\Component\HttpFoundation\Response
  * @throws \Throwable
*/
public function render($request, Throwable $exception): \Illuminate\Http\Response|\Illuminate\Http\JsonResponse|\Symfony\Component\HttpFoundation\Response
{
  if ($exception instanceof ValidationException) {
    $messages = $exception->validator->errors()->all();
    
    if (!count($messages) || !is_string($messages[0])) {
      return $exception->validator->getTranslator()->get(__('validation.invalid_data'));
    }
    
    $message = array_shift($messages);
    
    if ($count = count($messages)) {
      $pluralized = $count === 1 ? 'error' : 'errors';
    
      $message .= ' ' . $exception->validator->getTranslator()->get(__('validation.more_errors', ['count' => $count, 'pluralized' => $pluralized]));
    }
    
    return response()->json([
      'errors' => $exception->validator->getMessageBag(),
      'message' => $message
    ]);
  }
    
  return parent::render($request, $exception);
}

Good luck!