【问题标题】:Symfony 2 Passing Default DateSymfony 2 通过默认日期
【发布时间】:2017-08-23 14:24:51
【问题描述】:

我对 Symfony 2.7 还是很陌生。我正面临 Symfony 表单的问题。 在我的表单中,我有一个表单字段如下

 Builder->add('passDate', 'hidden')
        ->add('issueDate','hidden')

在我的控制器函数中,我需要将一些固定值传递给数据库。所以这是我的表单操作

$entity->setIssueDate('1950/01/01');
$entity->setPassDate('1950/01/01');

但是当我提交它时,它向我显示了这些表单字段是必需的错误,尽管我将默认日期设置为 1950/01/01。请帮我。谢谢

【问题讨论】:

  • 您是否有一些与这些表单字段相关的验证约束?我的意思是,NotBlank()?
  • 顺便说一句,验证错误来自表单组件,对吧?
  • 是的,我想在添加 Builder 之前添加默认值 .. 代码是这样的
  • ->add('issueDate', 'date', array('label'=>'issue Date','widget' => 'single_text', 'format' => 'dd/MM /yyyy'))
  • 内部实体。是的,它是 NotBlank ()

标签: php symfony


【解决方案1】:

您可以从两个字段中删除NotBlank symfomy 验证器映射,或者使用empty_data 选项,如果隐藏字段不是通过JavaScript 填充的,则该选项将填充默认值,如下所示:

$builder->add('passDate', 'hidden', array(
  'data' => null,
  'empty_data' => '1950/01/01'
)

【讨论】:

  • CRITICAL - 未捕获的 PHP 异常 Symfony\Component\Debug\Exception\FatalErrorException:“错误:在 /Applications/MAMP/htdocs/myProgramme/vendor/doctrine 上调用字符串上的成员函数 format()” /dbal/lib/Doctrine/DBAL/Types/DateType.php 第 53 行
  • 在 symfony 2.7 中是否可以将字符串转换为日期?
  • 我假设您的 getter/setter 正在处理格式问题,因为您在问题中将 string 传递给了它们。您可以使用数据转换器或只使用'empty_data' => new \DateTime('1950/01/01')
  • 我完全按照您的指示做了,但仍然没有完成,有什么我想念的吗?
  • 我的构建器是 ->add('passDate', 'hidden', array('data'=>null ,'empty_data' => new \DateTime(setPassDate('1950/01/01' ) )))
猜你喜欢
  • 2012-10-15
  • 2012-12-30
  • 1970-01-01
  • 1970-01-01
  • 2019-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-05
相关资源
最近更新 更多