Add maxlength to 255 chars on TextInput by default
For all my TextInput fields, I want to set a default maximum length of 255 characters, which is the commonly used VARCHAR length for database fields.
I tried implementing this in
However, I encountered an issue: if the TextInput is numeric or decimal, validation fails when the number exceeds 255.
So, I attempted to conditionally apply the maxLength only if the input is not numeric or decimal:
But this approach doesn’t work because configureUsing is called before the component is used in the code, so inputMode is always empty.
What should i do?
I tried implementing this in
app/Providers/AppServiceProvider.php:However, I encountered an issue: if the TextInput is numeric or decimal, validation fails when the number exceeds 255.
So, I attempted to conditionally apply the maxLength only if the input is not numeric or decimal:
But this approach doesn’t work because configureUsing is called before the component is used in the code, so inputMode is always empty.
What should i do?
Solution
What you likely need to do is to provide a closure to
You need to imagine that
The solution therefore would be to fetch the
maxLength() and only in that closure call getInputMode().You need to imagine that
::configureUsing() is called immediately when someone does TextInput::make(). So at that point, if you call getInputMode() then the code in the configureUsing does not yet know what other methods are chained after it, so hence it doesn't work (what you also said).The solution therefore would be to fetch the
getInputMode() at run-time, when the getMaxLength() function is actually being called: