Php Symfony表单-类型为“的预期参数”;字符串“&引用;日期时间“;鉴于

Php Symfony表单-类型为“的预期参数”;字符串“&引用;日期时间“;鉴于,php,forms,validation,symfony,datetime,Php,Forms,Validation,Symfony,Datetime,我收到以下错误消息: “预期参数类型为“字符串”,“日期时间”给定” 这是我表格的symfony代码 $builder->add('dateOfBirth', 'datetime', [ 'widget' => 'single_text', 'label' => 'Geboortedatum', 'attr' => ['class' => 'form-control birthdaypicker'], 'label_attr' =&

我收到以下错误消息: “预期参数类型为“字符串”,“日期时间”给定”

这是我表格的symfony代码

$builder->add('dateOfBirth', 'datetime', [
    'widget' => 'single_text',
    'label'  => 'Geboortedatum',
    'attr' => ['class' => 'form-control birthdaypicker'],
    'label_attr' => ['class' => 'col-sm-2 control-label']
]);
这是模板:

<div class="form-group">
    {{ form_label(form_pupil.dateOfBirth) }}
    <div class="col-sm-10">
        {{ form_widget(form_pupil.dateOfBirth) }}
        <small>{{ form_errors(form_pupil.dateOfBirth) }}</small>
    </div>
</div>
在我的文档(实体)中,它也是日期类型。我不知道为什么Symfony需要一个字符串。

试试这个:

$builder->add('dateOfBirth', 'datetime', [
    'data' => new \DateTime(),
    'widget' => 'single_text',
    'label'  => 'Geboortedatum',
    'attr' => ['class' => 'form-control birthdaypicker'],
    'label_attr' => ['class' => 'col-sm-2 control-label']
]);

无法检查datetime对象的长度!(删除此断言后,它就起作用了)

您可以发布有关错误消息的更多详细信息吗?它是来自Symfony表单/验证还是来自Doctrine ODM?第33行的vendor/Symfony/Symfony/src/Symfony/Component/Validator/Constraints/LengthValidator.php-}如果(!Is_scalar($value)和&!(Is_object($value)和method_exists($value,'.\u toString')){抛出新的异常($value,'string')}$stringValue=(字符串)$value;如果有人遇到此错误,我在validation.yml配置文件中遇到无效的验证规则。无法使用\DateTime(),Mongo不支持DateTime,我只需要date。如果将
DateTime
替换为
date
删除
'data'=>new\DateTime(),
line它起作用了吗?我更改了add to date的第二个参数。并删除了第三个参数数组中的“数据”。但主要问题是我文档中的断言验证。我在日期对象上使用了@Assert\Length。这导致了错误。为什么不检查表单的创建?
$builder->add('dateOfBirth', 'datetime', [
    'data' => new \DateTime(),
    'widget' => 'single_text',
    'label'  => 'Geboortedatum',
    'attr' => ['class' => 'form-control birthdaypicker'],
    'label_attr' => ['class' => 'col-sm-2 control-label']
]);
@Assert\Length(max=10, maxMessage="Een geboortedatum kan maximaal 10 karakters bevatten")