"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Énumérations et langage dans Laravel

Énumérations et langage dans Laravel

Publié le 2024-11-07
Parcourir:128

Rapport
Dans un projet sur lequel j'ai travaillé, il y avait un champ de sélection qui avait défini des valeurs qui ne changeraient pas. Ainsi, pour lister les éléments de cette sélection, j'ai décidé de créer une classe d'énumération puis de décrire ces valeurs. Cependant, le projet devait prendre en charge les langues anglaise et espagnole, et le texte des options sélectionnées devait s'adapter à cela sans perdre la référence à l'élément d'énumération respectif. En d'autres termes, si je sélectionnais l'élément "cheval", j'avais besoin que le système sache que cet élément est toujours "cheval" même s'il apparaît comme "cheval" ou "cheval". C'est pour maintenir l'intégrité des données que j'ai créé la structure suivante intégrant l'énumération et la langue dans le projet.

Que sont les énumérations
Une brève introduction. À partir de PHP version 8.1, une classe spéciale a été introduite pour énumérer les valeurs. En pratique, cela signifie que l'on peut créer une classe dont les valeurs des propriétés seront constantes. Un exemple est le statut, car si vous le laissez libre, tout au long du code vous aurez probablement un statut "actif", un autre "Actif", un autre "Actif" etc. Mais si vous associez le statut à une énumération et que vous utilisez l'énumération au lieu de taper la chaîne, je serai sûr que n'importe où dans le code, la valeur sera toujours celle de l'énumération.

enum Status
{
    case ATIVO = "ativo";
    case INATIVO = "inativo";
    case PENDENTE = "pendente";
}

Énumérations et langue
Puisque l'énumération est une classe, je peux normalement créer des méthodes pour ma classe. J'ai donc créé la méthode display() qui sera chargée de gérer la visualisation de ma valeur enum, en l'adaptant à la langue utilisée par l'utilisateur, sans toutefois modifier la valeur d'origine dans mon élément enum. Autrement dit, pour l'utilisateur, le statut apparaît « En attente », ou « En attente », ou « En attente » ; mais dans la base de données, il n'est enregistré que comme "en attente" - qui est la valeur d'origine et grâce à elle, je peux obtenir mon élément de l'énumération, et à partir de cet élément, utiliser la méthode d'affichage pour le montrer traduit à l'utilisateur.
Mais avant de montrer l’exemple, une introduction au langage Laravel. lang est un dossier à la racine du projet pour stocker les traductions que votre projet prendra en charge. Chaque langue possède un dossier et dans ce dossier des fichiers pour les contextes de traduction. Ces fichiers ont un tableau, où la clé est une représentation du mot et la valeur est la traduction dans la langue respective.

Enums e lang no Laravel

Configurer la méthode d'affichage
Dans le dossier lang, je vais créer un fichier status.php pour chaque dossier de langue avec le tableau suivant :

value => "Ativo",
    Status::INATIVO->value => "Inativo",
    Status::PENDENTE->value => "Pendente",
];

Je corrige les valeurs du tableau selon les traductions respectives de la langue respective.
Et ma méthode d'affichage récupérera la traduction de l'élément enum dans ces fichiers status.php et renverra cette valeur.

public function display(): string
{
    return trans('status.'.$this->value);
}

Exemple d'utilisation :

// EN
echo Status::ATIVO->display(); // Active

// PT_BR
echo Status::INATIVO->display(); // Inativo

// ES
echo Status::PENDENTE->display(); // Pediente

Conclusion
Avec cela, je garantis que ma valeur enum reste constante dans mon code, mais elle s'adapte à la langue de l'utilisateur en utilisant la méthode d'affichage sans perdre l'intégrité des données. Cela reste également flexible si j'ajoute une nouvelle langue au système. J'espère que vous avez apprécié celui-ci et à la prochaine fois.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/eunael/enums-e-lang-no-laravel-43am?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3