在Symfony 2.7中无法更改String For Date Formate

时间:2017-08-24 03:23:38

标签: php symfony symfony-2.7

好的,尝试调试这个问题几天,现在我放弃了。 我有followig表单构建器

  Builder
    ->add('passDate', 'hidden', array('data'=>null, 'empty_data'=> date('Y-m-d',strtotime('1950-10-10'))))
    ->add('TDVLFirstIssue', 'hidden', array('data'=>null, 'empty_data'=> date('Y-m-d',strtotime('1950-10-10'))))
    ->add('TDVLExpiryDate', 'hidden', array('data'=>null, 'empty_data'=> date('Y-m-d',strtotime('2017-10-10'))));

这是我的实体

/**
     * @var \DateTime
     *
     * @ORM\Column(name="passDate", type="date")
     * @Assert\NotBlank()
     */
    private $passDate;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="tdvlIssue", type="date")
     * @Assert\NotBlank()
     */
    private $TDVLFirstIssue;

    /**
     * @var \DateTime
     *
     * @Assert\GreaterThan(value = "+1 day midnight", message="Your TDVL require at least 1 month validity.")
     * @ORM\Column(name="tdvlExpiry", type="date")
     * @Assert\NotBlank()
     */
    private $TDVLExpiryDate;

public function setPassDate($passDate)
    {
        $this->passDate = $passDate;

        return $this;
    }

    /**
     * Get passDate
     *
     * @return \DateTime
     */
    public function getPassDate()
    {
        return $this->passDate;
    }

public function setTDVLFirstIssue($tDVLFirstIssue)
    {
        $this->TDVLFirstIssue = $tDVLFirstIssue;

        return $this;
    }

    /**
     * Get tDVLFirstIssue
     *
     * @return \DateTime
     */
    public function getTDVLFirstIssue()
    {
        return $this->TDVLFirstIssue;
    }
**
     * Set tDVLExpiryDate
     *
     * @param \DateTime $tDVLExpiryDate
     *
     * @return User
     */
    public function setTDVLExpiryDate($tDVLExpiryDate)
    {
        $this->TDVLExpiryDate = $tDVLExpiryDate;

        return $this;
    }

    /**
     * Get tDVLExpiryDate
     *
     * @return \DateTime
     */
    public function getTDVLExpiryDate()
    {
        return $this->TDVLExpiryDate;
    }

这是我的控制器

$entity = new User();
$form = $this->createSystemUserForm($entity);
$form->handleRequest($request);

    if ($form->isValid()) {
         $em = $this->getDoctrine()->getManager();
         $entity->setTDVLFirstIssue(date('Y-m-d',strtotime('1950-10-10')));
         $entity->setTDVLExpiryDate(date('Y-m-d',strtotime('2018-10-10')));
         $entity->setPassDate(date('Y-m-d',strtotime('1950-10-10')));
    }

我想要做的是我想将默认日期传递给数据库。所以我尝试使用vanilla php格式转换功能数据和格式。但是,当我提交表单时,它会抛出这个错误

  

错误:在字符串

上调用成员函数format()
public function convertToDatabaseValue($value, AbstractPlatform $platform)
{
    return ($value !== null)
        ? $value->format($platform->getDateFormatString()) : null;
}

。我了解$passDate$TDVLFirstIssue$TDVLExpiryDate不能为空,在实体中定义为NotBlank()。我怀疑是因为字符串到日期转换不成功。那么可以帮我解决这个问题吗?提前致谢。 注意:请注意我使用的是symfony 2.7。

1 个答案:

答案 0 :(得分:1)

我按照以下方式更改了构建日期,但它确实有效。

builder
->add('passDate', 'hidden', array('data'=>null, 'empty_data'=> date_create('1950-10-10')))
->add('TDVLFirstIssue', 'hidden', array('data'=>null, 'empty_data'=> date_create('1950-10-10')))
->add('TDVLExpiryDate', 'hidden', array('data'=>null, 'empty_data'=> date_create('2017-10-10')));

希望它有所帮助。