[PHP] Laravel 9+ 有效管理下拉选项

引言

php 8 引入了 enum 类型,相信有接触 Java, Python, ...等其他语言的大大们对 enum 并不陌生。这次将利用 enum 更有效的管理下拉选单的选项,提高程式码的可读性和可维护性。

以下将示範如何建立一个“性别”的下拉选单,并在 Laravel 9+ 中应用它,充分发挥 PHP 8 的新功能。

下拉选项定义

使用方法很像定义常数const MALE = 'male',把我们需要的选项都列出来。之后如果想要新增选项或是调整值都在这边设定。

enum Gender: string{    case MALE = 'male';    case FEMALE = 'female';    case OTHER = 'other';}

核心程式码

主要有两块,分别为列出下拉选项options()以及显示已选项目text()。而resolveEnumClass()以及trans()可以根据自己的结构做调整。

options('gender')取得App\Enums\Gender 里面所有的 cases 并将它翻译输出阵列。text('gender', 'male')将指定的选项值转为文字。
class DropdownManager{    public function options(string $enum): array    {        $class = $this->resolveEnumClass($enum);        $enumCases = $class::cases();        $options = array_reduce($enumCases, function ($options, $enumCase) {            Arr::set($options, $enumCase->value, $this->trans($enumCase));            return $options;        }, array());        return $options;    }    public function text(string $enum, mixed $value): string    {        $class = $this->resolveEnumClass($enum);        $enumCase = $class::from($value);        return $this->trans($enumCase);    }    private function resolveEnumClass(string $enum): string    {        return 'App\\Enums\\' . Str::ucfirst($enum);    }    private function trans(mixed $enumCase): string    {        return trans('enums.' . Str::lower($enumCase->name));    }}

使用方式

请使用Helper或是Facade注册DropdownManager,这边以Facade注册并命名为Dropdown,使用 Laravel Blade 为範例,在新增以及修改页面显示下拉选单。

<select name="gender">     @foreach(Dropdown::options('gender') as $optionValue => $optionLabel)        <option value="{{ $optionValue }}">{{ $optionLabel }}</option>    @endforeach</select>

在查看页面显示已选项目。

<p>{{ Dropdown::text('gender', $user->gender) }}</p>

总结

在管理下拉选单的选项时,选择合适的方法至关重要,而 enum 仅仅是其中之一。根据实际情况和需求来选择最适合的管理方式。希望本文能帮助您更好地理解 enum 的应用,无论採用哪种方式,最终目标还是确保程式码的品质!


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章