【问题标题】:Get datetime in form builder symfony3在表单构建器 symfony3 中获取日期时间
【发布时间】:2016-12-09 10:32:25
【问题描述】:

如何获取日期时间并添加到数据库中,我在 (Bundle/Form/ClassType.php) 有类似的表单类型构建器

$registered = date('Y-m-d');

$builder->add('registered', TextType::class, array(
    'label' => 'registered',
    'data' => $registered,
));     

这是我的实体类(Bundle/Entity/Class.php)

/**
 * @var \DateTime
 *
 * @ORM\Column(name="registered", type="datetime", columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
 */
private $registered;

问题是我无法在 db 上添加它,我收到类似

的错误

错误:调用字符串上的成员函数 format()

有什么帮助吗?

【问题讨论】:

标签: php symfony symfony-3.1


【解决方案1】:

您需要使用 DateType 而不是 TextType。

->add('registered', DateType::class, array(
            'widget' => 'single_text',
            'input' => 'string',
            'format' => 'yyyy-MM-dd',
            'data' => $registered,
            'attr' => array(
                'placeholder' => 'yyyy-MM-dd',
            )
        ))

【讨论】:

  • 嗨错误错误:调用字符串上的成员函数格式()
  • 尝试不使用 'input' => 'string'
  • 错误无法转换属性路径“已注册”的值:应为 \DateTimeInterface。
  • 我可以在我的表单实体上使用 current_timestamp 以便每次我进行一些更改时它都会覆盖已注册的值吗?怎么样?
  • 这是因为你传递一个字符串数据,你必须传递一个DateTime对象,改变$registered = new \DateTime('now');另一方面,如果您每次进行一些更改时都需要更改日期,我建议您使用@HasLifecycleCallbacks,您可以在此处找到更多信息:doctrine-orm.readthedocs.io/en/latest/reference/…
猜你喜欢
  • 1970-01-01
  • 2013-10-01
  • 1970-01-01
  • 2012-05-09
  • 2022-10-13
  • 2016-09-27
  • 2020-08-09
  • 1970-01-01
  • 2021-09-17
相关资源
最近更新 更多