Erreur : Call to undefined method ResourceRegistrar::addResourcendex()
Le problème
Selon la configuration d'encodage de votre serveur, vous rencontrerez l'une de ces erreurs :
- Call to undefined method Illuminate\Routing\ResourceRegistrar::addResourcendex()
- Call to undefined method Illuminate\Routing\ResourceRegistrar::addResource?ndex()
Explication
Ce problème provient d'un encodage serveur qui ne prend pas entièrement en charge l'UTF-8. Il affecte couramment le turc et d'autres langues où la conversion de casse des caractères diffère des règles ASCII standard, en particulier avec la lettre « i » dans les applications Laravel.
Le problème provient de la classe ResourceRegistrar dans le système de routage de Laravel, spécifiquement dans la méthode register(). Cette méthode itère sur les méthodes de ressource et construit dynamiquement les noms de méthodes en utilisant ucfirst(), qui est sensible aux paramètres régionaux du serveur :
foreach ($this->getResourceMethods($defaults, $options) as $m) {
$collection->add($this->{'addResource'.ucfirst($m)}(
$name, $base, $controller, $options
));
}
Solution
Configurez toutes les ressources du serveur (Apache, PHP, MySQL) pour utiliser exclusivement l'encodage UTF-8 ou avec un support complet de l'UTF-8. De plus, assurez-vous que tous les fichiers modifiés sont enregistrés en UTF-8 sans BOM (Byte Order Mark).