You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Custom Validation Rule Error: {field}, {param} , {value} Placeholders Not Replaced in Error Messages #9218
Which operating systems have you tested for this bug?
Windows, Linux
Which server did you use?
apache
Database
No response
What happened?
When creating a custom validation rule, the custom error message returned from the rule does not allow for including specific data about the field being validated.
Even if we include the {field} placeholder in the message, it does not get replaced with the actual field name, which limits the usefulness of the error message.
Steps to Reproduce
Define a custom validation rule (e.g., valid_enum) in your validation rules.
Inside the rule, try to return a custom error message with the {field} placeholder.
Perform validation using this rule and check the returned error message.
The expected behavior is that the {field} placeholder should be replaced with the actual field name being validated, in this case, status. For example, the error message should be:
The field Status must be one of the valid values.
However, the {field} placeholder does not get replaced, and the error message is returned without the field name, reducing the clarity of the validation error.
Anything else?
This limitation affects all custom rules where dynamic placeholders such as {field}, {param} , {value} are expected to be replaced by the validation system. Without this, the error messages lack context, making it difficult to identify which field caused the validation failure.
This isn't the same issue, as I am referring here to updating the &$error parameter directly. Validation::getErrorMessage will never run when we set $error.
However, I did notice that we now have a new $field parameter in the method as the fifth input parameter, which I can use to solve this.
The only limitation is that if the validation rule doesn’t include $params, then $field won't be passed into the function.
Then you can use the extended version of parameters in your rule.
I believe it would be beneficial for the $error variable to also pass through the getErrorMessage method. This would allow custom validation rules to take advantage of the same dynamic placeholder replacement system used by built-in rules, ensuring that placeholders like {field}, {param}, and {value} are properly replaced in custom error messages.
changed the title [-]Bug: Custom Validation Rule Error: {field}, {param} , {value} Placeholders Not Replaced in Error Messages[/-][+]Custom Validation Rule Error: {field}, {param} , {value} Placeholders Not Replaced in Error Messages[/+]on Oct 13, 2024
Activity
neznaika0 commentedon Oct 9, 2024
See PR #9201
maniaba commentedon Oct 9, 2024
This isn't the same issue, as I am referring here to updating the
&$errorparameter directly.Validation::getErrorMessagewill never run when we set$error.However, I did notice that we now have a new
$fieldparameter in the method as the fifth input parameter, which I can use to solve this.The only limitation is that if the validation rule doesn’t include
$params, then$fieldwon't be passed into the function.CodeIgniter4/system/Validation/Validation.php
Line 338 in 118c2c4
michalsn commentedon Oct 11, 2024
Just use language translations:
The other option is to declare an empty params, like:
Then you can use the extended version of parameters in your rule.
maniaba commentedon Oct 13, 2024
I believe it would be beneficial for the
$errorvariable to also pass through thegetErrorMessagemethod. This would allow custom validation rules to take advantage of the same dynamic placeholder replacement system used by built-in rules, ensuring that placeholders like{field},{param}, and{value}are properly replaced in custom error messages.CodeIgniter4/system/Validation/Validation.php
Line 366 in 118c2c4
[-]Bug: Custom Validation Rule Error: {field}, {param} , {value} Placeholders Not Replaced in Error Messages[/-][+]Custom Validation Rule Error: {field}, {param} , {value} Placeholders Not Replaced in Error Messages[/+]paulbalandan commentedon Mar 15, 2026
Fixed by #10024