”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > Laravel 的枚举

Laravel 的枚举

发布于2024-11-07
浏览:766

报告
在我从事的一个项目中,有一个选择字段定义了不会更改的值。因此,为了列出此选择中的项目,我决定创建一个枚举类,然后描述这些值。但是,该项目需要支持英语和西班牙语,并且选择选项的文本需要适应这一点,同时又不丢失对相应枚举项的引用。换句话说,如果我选择了“马”这个项目,我需要系统知道这个项目仍然是“马”,即使它显示为“马”或“caballo”。为了保持数据的完整性,我在项目中创建了以下集成枚举和语言的结构。

什么是枚举
简单介绍一下。从 PHP 8.1 版本开始,引入了一个特殊的类用于枚举值。实际上,这意味着我们可以创建一个属性值恒定的类。一个例子是状态,因为如果你让它自由,在整个代码中你可能会有一个“活动”状态,另一个“活动”,另一个“活动”等等。但是,如果您将状态绑定到枚举并使用枚举而不是键入字符串,我将确保代码中任何位置的值将始终是枚举中的值。

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

枚举和语言
由于枚举是一个类,因此我可以正常为我的类创建方法。因此,我创建了 display() 方法,该方法将负责处理枚举值的可视化,使其适应用户正在使用的语言,但不会更改枚举项中的原始值。也就是说,对于用户来说,状态出现“待处理”,或者“待处理”,或者“待处理”;但在数据库中,它仅保存为“待处理” - 这是原始值,通过它我可以从枚举中获取我的项目,并从该项目使用显示方法将其翻译给用户显示。
但在展示示例之前,先介绍一下 Laravel lang。 lang 是项目根目录中的一个文件夹,用于存储项目将支持的翻译。每种语言都有一个文件夹,该文件夹中包含翻译上下文文件。这些文件有一个数组,其中键是单词的表示,值是相应语言的翻译。

Enums e lang no Laravel

配置显示方式
在 lang 文件夹中,我将为每个语言文件夹创建一个 status.php 文件,其中包含以下数组:

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

我将数组值更正为相应语言的相应翻译。
我的显示方法将获取这些 status.php 文件中枚举项的翻译并返回该值。

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

使用示例:

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

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

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

结论
这样,我保证我的枚举值在代码中保持不变,但它使用显示方法适应用户的语言,而不会丢失数据完整性。如果我向系统添加新语言,它也保持灵活性。希望您喜欢这一期,下次再见。

版本声明 本文转载于:https://dev.to/eunael/enums-e-lang-no-laravel-43am?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何在 MySQL 中将行转置为列:综合指南
    如何在 MySQL 中将行转置为列:综合指南
    在 MySQL 中将行转换为列在 MySQL 查询中将行转换为列需要在应用程序中执行复杂的查询或手动操作。GROUP_CONCAT 解决方案虽然 GROUP_CONCAT 可以将行转换为单列,但它不提供整个结果集所需的转置。手动查询方法对于更复杂的转置,需要细致的查询,从原始行手动构造每一列。复杂查...
    编程 发布于2024-11-07
  • 如何解决iOS后台模式下未收到GCM通知的问题
    如何解决iOS后台模式下未收到GCM通知的问题
    当应用程序在 iOS 上处于后台模式时未收到 GCM 通知当 iOS 在后台收到通知但不处理时,会出现此问题它们在用户界面中。要解决此问题,请确保您的应用:启用后台推送通知:检查您的应用是否已请求并获得在后台接收推送通知的权限。设置徽章应用程序图标:验证是否在应用程序的“设置”>“通知”部分中选择了...
    编程 发布于2024-11-07
  • 为什么在 Windows 7 中使用 CLASSPATH 时出现 ClassNotFoundException?
    为什么在 Windows 7 中使用 CLASSPATH 时出现 ClassNotFoundException?
    尽管使用 CLASSPATH 环境变量仍解决 java.lang.ClassNotFoundException在 Windows 7 中尝试使用 Java 连接到 MySQL 数据库时,设置 CLASSPATH 环境变量以包含 JDBC 驱动程序 jar 文件的路径似乎无法解决 java.lang....
    编程 发布于2024-11-07
  • 开发人员需要了解免费外汇 API
    开发人员需要了解免费外汇 API
    如果您是一名开发人员,您一定正在寻找可以帮助您更轻松地工作的工具,对吗?免费的外汇 API 就是其中之一!它使您无需支付任何费用即可获取外汇汇率。但是,许多开发人员对这些 API 不太了解。因此,本文旨在解释什么是免费外汇 API、它为何有用以及如何为您的项目选择一个 API。 什么是免费外汇 A...
    编程 发布于2024-11-07
  • 如何使用 JavaScript 将字符串中每个单词的首字母大写?
    如何使用 JavaScript 将字符串中每个单词的首字母大写?
    使用 JavaScript 将字符串中每个单词的首字母大写在 JavaScript 中,将字符串中每个单词的首字母大写可以可以通过多种方法来实现。一种常见的方法是使用将给定字符串转换为标题大小写的函数。让我们探索一个演示此技术的代码示例:function titleCase(str) { var...
    编程 发布于2024-11-07
  • 我们能否在 JavaScript 中实现超越“setTimeout()”的可靠计时器精度?
    我们能否在 JavaScript 中实现超越“setTimeout()”的可靠计时器精度?
    在 Javascript 中实现超越 setTimeout() 的计时器精度Javascript 的 setTimeout() 方法在精度方面经常达不到要求,表现出不可预测的延迟,可能会影响 UI 操作。因此,开发人员可能想知道是否有其他方法可以提供更可靠的计时功能。使用 setTimeout() ...
    编程 发布于2024-11-07
  • 使用 Amazon Q Transformation 将 Java 颂歌转换为 Java
    使用 Amazon Q Transformation 将 Java 颂歌转换为 Java
    近年来,Java 取得了显着的进步,每个新版本都引入了强大的功能和优化。如果您仍在 Java 8 上运行,您就会错过性能、语法和安全性方面的重大改进。从 Java 8 升级到 Java 17 似乎令人畏惧,但 Amazon Q 的转换功能通过自动化一些较繁琐的步骤使升级变得更加容易。在这篇文章中,我...
    编程 发布于2024-11-07
  • 使用 React 构建食谱查找器网站
    使用 React 构建食谱查找器网站
    Introduction In this blog, we'll be building a Recipe Finder Website using React. This app allows users to search for their favorite recipes,...
    编程 发布于2024-11-07
  • Turborepo 与 Nx:哪种 Monorepo 工具适合您?
    Turborepo 与 Nx:哪种 Monorepo 工具适合您?
    随着现代开发变得越来越复杂,monorepos变得越来越流行。它们允许将多个项目或包存储在单个存储库中,从而简化依赖关系管理并促进更好的协作。用于管理 monorepos 的两个顶级工具是 Turborepo 和 Nx。 这两种工具都旨在提高处理单一存储库的效率和可扩展性,但它们具有独特的优势。在本...
    编程 发布于2024-11-07
  • Java 数组简介
    Java 数组简介
    编程通常涉及管理和操作大量数据,对此高效且有效的数据结构至关重要。数组是计算机科学中的基本数据结构,提供了一种存储固定大小的相同类型元素序列的方法。在本博客中,我们将深入了解 Java 中的数组:了解它们是什么、它们的语法、如何对它们进行操作以及它们的内存管理。 为什么我们需要数组?...
    编程 发布于2024-11-07
  • 解决 CORS 问题的方法
    解决 CORS 问题的方法
    要解决 CORS 问题,您需要在 Web 服务器(如 Apache 或 Nginx)、后端(如 Django、Go 或 Node.js)中添加适当的标头,或在前端框架(如 React 或 Next.js)中。以下是每个平台的步骤: 1. 网络服务器 阿帕奇 您可以在 ...
    编程 发布于2024-11-07
  • 内存对齐如何影响 C 结构的大小?
    内存对齐如何影响 C 结构的大小?
    C 结构中的内存对齐使用 C 结构时,理解内存对齐至关重要。内存对齐是指将数据在内存中放置在特定的边界处。在 32 位机器上,内存通常按 4 字节边界对齐。结构的内存对齐考虑以下结构:typedef struct { unsigned short v1; unsigned short...
    编程 发布于2024-11-07
  • 受顶级旅游景点启发构建创新项目:令人难忘的旅行体验开发人员指南
    受顶级旅游景点启发构建创新项目:令人难忘的旅行体验开发人员指南
    作为开发商,我们经常从周围的世界中汲取灵感——还有什么比令人难以置信的旅游景点更好的来源呢?无论您是在开发旅行应用程序、沉浸式体验还是基于位置的服务,了解目的地的脱颖而出都是关键。看看这份关于阿尔巴尼亚最佳旅游景点的终极指南,为您的下一个创意项目提供动力,并了解这些地标如何在现实世界和数字世界中塑造...
    编程 发布于2024-11-07
  • 如何使用 std::locale 在 C++ 中使用逗号格式化数字?
    如何使用 std::locale 在 C++ 中使用逗号格式化数字?
    在 C 中用逗号格式化数字 在 C 中,std::locale 类提供了一种依赖于区域设置的方式用逗号格式化数字.std::locale 与 std::stringstream要将数字格式化为带逗号的字符串,可以将 std::locale 与 std::stringstream 一起使用如下:#in...
    编程 发布于2024-11-07
  • 如何避免在 Python 中打印素数序列中的奇数?
    如何避免在 Python 中打印素数序列中的奇数?
    如何在 Python 中打印素数序列许多程序员都在努力创建一个在 Python 中准确打印素数的函数。一个常见的问题是打印奇数列表。要解决这个问题,必须彻底了解素数属性并修改代码。素数只能被 1 和它们本身整除。因此,改进的代码检查从 2 到数字的平方根(如果数字较小,则为数字本身)范围内的整除性。...
    编程 发布于2024-11-07

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3