【问题标题】:Disable a future date using the Symfony DateType使用 Symfony DateType 禁用未来日期
【发布时间】:2021-08-11 13:32:32
【问题描述】:

我正在使用 Symfony 5,但我的表单有问题。

当我将DateType'widget' => 'single-text'js-datepicker 一起使用时,如何禁用将来的日期? 请注意,我无权访问前端,一切都必须在后端完成。 这是我目前拥有的:

$builder->add('date', DateType::class, [
            'widget' => 'single_text',
            'attr' => [
                'class' => 'js-datepicker'
            ]
        ]);

提前感谢您的回答!

【问题讨论】:

  • 我认为这不可能。根据this,您只能在插件初始化时使用json对象设置maxDate,或者在设置maxDateoption之后设置maxDate
  • 我猜你可以修改你的表单 DateType 来添加一个max 属性(比如this),但它可能会继续在你的前端 datepicker 插件中显示所有日期。您必须修改前端来执行此操作或修改插件,以便它可以读取此 max 和 min 属性以在插件中创建 maxDateminDate 选项。

标签: symfony symfony-forms symfony5


【解决方案1】:

如果您想使用 HTML5 验证,可以使用 max 属性:

$builder->add('date', DateType::class, [
    'widget' => 'single_text',
    'attr' => [
        'class' => 'js-datepicker',
        'max' => date('Y-m-d')
    ]
]);

如果你想进行后端验证,你可以使用 Symfony Assert 你可以使用LessThanLessThanOrEqual(如果你想包括今天的日期)

在您的实体中添加此导入:

use Symfony\Component\Validator\Constraints as Assert;

然后你可以使用@Assert

/**
 * @Assert\LessThan("today")
 */
private $date;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多