iserv / zeit-bridge
将Zeit库集成到Symfony中
v1.1
2022-06-24 06:51 UTC
Requires
- php: >=8.1
- doctrine/dbal: ^2.6
- iserv/zeit: ^1.1
- symfony/form: ^4.4 || ^5.0
README
基本
该库将Zeit库中的日期和时间域对象集成到Doctrine和Symfony中。
使用方法
Doctrine的日期和时间类型
您可以使用zeit_date
或zeit_time
注解您的实体字段,Doctrine会将相应的数据库字段DATE
和TIME
转换为域对象,而不是将PHP的本地DateTime
对象进行填充。
use Doctrine\ORM\Mapping as ORM; use IServ\Library\Zeit\Time; class RestPeriod { /** * @ORM\Column(name="`end`", type="zeit_time", nullable=false) * * @var Time */ private $start; public function getStart(): Time { return $this->start; } }
您不需要处理包含您不需要的数据的\DateTime
对象(例如,当前时间或日期),您只需获取您想要的域数据。
表单的日期和时间类型
该库还提供了ZeitDateType
和ZeitTimeType
用于Symfony表单。您可以使用这些类型将模型映射到表单,并使用底层日期和时间表单类型。Zeit表单类型会自动将数据转换为所需的本地DateTime
对象。
use IServ\Bridge\Zeit\Form\Type\ZeitTimeType; use IServ\Library\Zeit\Time; use Symfony\Component\Validator\Constraints as Assert; class RestPeriodData { /** * @Assert\NotNull(message="This value is required.") * * @var Time|null */ private $start; public function getStart(): ?Time { return $this->start; } /** * @return $this */ public function setStart(?Time $start): self { $this->start = $start; return $this; } } // Somewhere in a controller $data = new RestPeriodData(); $form = $this->createForm(RestPeriodType::class, $data) ->add('start', ZeitTimeType::class, [/* ... */]) ->getForm() ;