palabs/enum-bundle
最新稳定版本:3.1.1
Composer 安装命令:
composer require palabs/enum-bundle
包简介
Symfony bundle for php 8.1 enums
关键字:
README 文档
README
Bundle provide integration PaLabs/php-enum with symfony
Features
- Enum form type
- Enum translator (with twig extension)
- Doctrine integration (enum field type, types auto generation)
- Enum auto initializer
Installation
- Require bundle using composer
composer require palabs/enum-bundle
- Add bundle to bundle list (file bundles.php in symfony 5)
return [ PaLabs\EnumBundle\PaEnumBundle::class => ['all' => true], ];
- Create configuration (in your config dir). Example:
pa_enum: translator: domain: 'enums' doctrine: path: - '%kernel.project_dir%/src'
Usage
Translator
EnumTranslator class provide methods to translate enum values. Example:
use PaLabs\Enum\Enum; use \PaLabs\EnumBundle\Translator\EnumTranslator; use Symfony\Component\HttpFoundation\Request; class ActionEnum extends Enum { public static ActionEnum $VIEW, $EXIT; } ActionEnum::init(); class FooController { private EnumTranslator $enumTranslator; public function __construct(EnumTranslator $enumTranslator) { $this->enumTranslator = $enumTranslator; } public function fooAction(Request $request) { return $this->enumTranslator->translate(ActionEnum::$VIEW); } }
Enum form
Class EnumType provide symfony form type for your forms. Example:
use PaLabs\EnumBundle\Form\EnumType; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; class MyForm extends AbstractType { public function buildForm(FormBuilderInterface $builder,array $options){ $builder->add('field', EnumType::class, [ 'type'=>ActionEnum::class, 'required' => true, ]); } }
Doctrine type
Bundle provide a mechanism for doctrine type generation based on you enums. For example, if you have an entity class:
use Doctrine\ORM\Mapping as ORM; use PaLabs\Enum\Enum; class BookType extends Enum { public static BookType $MONOGRAPHY, $THESES, $OTHER: } BookType::init(); class Book { /** * @ORM\Column(type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private ?int $id = null; /** * @ORM\Column(name="name", type="text", nullable=false) */ private string $name = ''; /** * @ORM\Column(name="type", type=BookType::class, nullable=false) */ private BookType $type; public function __construct() { $this->type = BookType::$MONOGRAPHY; } }
Bundle will automaticly generate a doctrine type for BookType enum and add it to doctrine types config. You can specify paths where enums will be found:
pa_enum: doctrine: path: - '%kernel.project_dir%/src' - '%kernel.project_dir%/vendor/my-bundle/src'
Enum initializer
To not manually call Enum::init() for every enum, you can use enum initializer. Simply add to bundle config:
pa_enum: initializer: path: - - '%kernel.project_dir%/src'
And bundle will automatically call init() for every enum in path. init() will be called on bundle boot.
统计信息
- 总下载量: 1.67k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2020-04-07