我正在尝试在CakePHP中实现 FriendsOfCake\Search 插件 . 我正确地实现了搜索类型,但是当我提交表单尝试使用日期搜索时,我收到以下致命错误:

错误:在非对象上调用成员函数format()

我假设我的日期没有被格式化为日期对象,但不确定我需要在哪里进行,如果有的话 . 以下是我正在使用的代码片段 .

UsersTable.php - 我的 searchConfiguration() 方法内部

->compare('created_start', [
        'field' => $this->aliasField('created')
    ])

index.ctp - 生成我的表单

<?= $this->Form->label('created_start') ?>
<?= $this->Form->date('created_start') ?>

我认为就是这样,我有文本框和选择框作为表单的一部分,它只是我无法启动和运行的日期 .

这是错误消息的堆栈跟踪(我相信这是要求的,它是我的页面的左侧列 .

Cake\Error\BaseErrorHandler->handleFatalError

Core/src/Error/BaseErrorHandler.php, line 90

Cake\Error\BaseErrorHandler->Cake\Error\{closure}

[internal function]

完整的错误块说:

Error: Call to a member function format() on a non-object
File /var/www/<project_name>/vendor/cakephp/cakephp/src/Database/Type/DateTimeType.php
Line: 94

DataTimeType.php的第94行是toDatabase()方法的一部分 . 它试图将datetime对象转换为与数据库一起使用的字符串 . 特别是第94行

return $value->format($this->_format);

使用Cake 3.1.0版