【问题标题】:Symfony 3 dateType add default optionSymfony 3 dateType 添加默认选项
【发布时间】:2017-04-16 19:02:50
【问题描述】:

这就是我所拥有的:

  • 一个带有月份的选择字段
  • 一个带有年份的选择字段

但在月份选择字段中,我想添加一个默认选项,例如:

<option value="current">Current</option> 

我不知道如何添加默认选项,占位符不是选项。 这是我现在的代码,使用 dateType

->add('startDate', DateType::class, [
    'label' => 'Start date',
    'label_attr' => array('class' => 'sr-only'),
    'placeholder' => [
        'year' => 'Year',
        'month' => 'Month',
    ],
    'years' => range(date('Y')-70, date('Y')),
])

谁能帮我解决这个问题? 谢谢!

【问题讨论】:

  • 发布您使用该类型的控制器操作。简而言之:只需在实体中设置值(在构造函数中或在生成此表单的控制器操作中)。
  • 在 symfony 之外可能同样容易做到这一点,就像在 jQuery 中一样。只需在显示“当前日期”的表单旁边添加一个链接,然后 onClick 相应地设置年份和月份选择字段。

标签: php symfony symfony-forms symfony-3.2


【解决方案1】:

要设置默认值,请使用, array('data' =&gt; new \DateTime())

->add('startDate', DateType::class, [
    'label' => 'Start date',
    'label_attr' => array('class' => 'sr-only'),
    'placeholder' => [
       'year' => 'Year',
       'month' => 'Month',
       ],
    'years' => range(date('Y')-70, date('Y')),
    'data' => new \DateTime(),
])

【讨论】:

    【解决方案2】:

    range 用于生成数组,因此最简单的方法就是在数组的开头添加您的值。

    类似:

    'years' =&gt; array_merge(['current'=&gt;'current'], range(date('Y')-70, date('Y')))

    【讨论】:

    • 感谢您的回答,不幸的是它不起作用,因为我需要将默认选项添加到我的“月份”选择中。
    • 通过在月份上添加一个范围 ('months' => array_merge(['current'=>'current'], range(date('m'), 12)),) 警告: gmmktime() 期望参数 4 为整数,给定字符串
    • 我想我误解了你当时想要的东西。您想添加带有“当前”(字符串)值和文本的选项吗?或者你想默认拥有当前月份selected="selected"
    • 我想添加一个选项“当前”值和文本(字符串)。也许我必须使用 ChoiceType 而不是 DateType?
    • 根据您之前使用gmmktime() 时遇到的错误,我也猜到了。 DateType 多年来一直在 gmmktime() 中运行,因此他可以通过 TimeFormatter 运行它们以匹配您选择的任何 formatChoiceType 将接受任何内容,但这也意味着您必须自己确保数据的有效性(确实是日期)。对我来说,选择当前年份作为默认年份似乎是一个更好的选择。
    猜你喜欢
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多