We have users from TamilNadu and it looks like Laravel's default Str::slug() cannot handle characters like: தமிழ் . It simply returns a blank string. This is resulting into 404's on the profile pages of the users.
I'm wondering how do I fix this issue without disturbing the rest of my URLs. I think one way to fix this is to override the default Str::slug() function and check if the original function returns an empty string. If it does, I could comment the first field of as $title = static::ascii($title). then its works. But i don't want to disturb the default Str::slug() method. at the same time don't know how to override it.
Default Str::slug():
public static function slug($title, $separator = '-')
{
//$title = static::ascii($title);
// Convert all dashes/underscores into separator
$flip = $separator == '-' ? '_' : '-';
$title = preg_replace('!['.preg_quote($flip).']+!u', $separator, $title);
// Remove all characters that are not the separator, letters, numbers, or whitespace.
$title = preg_replace('![^'.preg_quote($separator).'\pL\pN\s]+!u', '', mb_strtolower($title));
// Replace all separator characters and whitespace by a single separator
$title = preg_replace('!['.preg_quote($separator).'\s]+!u', $separator, $title);
return trim($title, $separator);
}
How are you handling this in your app? Thanks for advance..
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire