iserv/zeit-bridge

将Zeit库集成到Symfony中

v1.1 2022-06-24 06:51 UTC

This package is auto-updated.

Last update: 2024-09-24 11:38:54 UTC


README

基本

该库将Zeit库中的日期和时间域对象集成到Doctrine和Symfony中。

使用方法

Doctrine的日期和时间类型

您可以使用zeit_datezeit_time注解您的实体字段,Doctrine会将相应的数据库字段DATETIME转换为域对象,而不是将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对象(例如,当前时间或日期),您只需获取您想要的域数据。

表单的日期和时间类型

该库还提供了ZeitDateTypeZeitTimeType用于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()
;