【问题标题】:Typo3 validator returns Call to a member function addError() on nullTypo3 验证器在 null 上返回对成员函数 addError() 的调用
【发布时间】:2016-07-07 12:06:16
【问题描述】:

我有一个流畅的表单。编辑完成后,一个 ajax 调用被传递给控制器 我创建了一个 EmailAddressValidator() 我的代码如下

$validate =  \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Validation\\Validator\\EmailAddressValidator');
$result = $validate->isValid('xyz@gmail.com');

如果电子邮件格式正确,它不会返回任何内容。但它会返回

调用成员函数 addError()

如果格式不正确。

【问题讨论】:

    标签: model-view-controller typo3 extbase


    【解决方案1】:

    (更新)

    问题在于您如何调用验证器。您需要调用方法validate,而不是isValid

    所以这应该有效:

    $validate =  \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Validation\\Validator\\EmailAddressValidator');
    $result = $validate->validate('xyz@gmail.com');
    

    $resultTYPO3\CMS\Extbase\Error\Result的一个实例,你可以在它上面使用hasErrors方法来检查邮件是否有效。

    【讨论】:

    • TYPO3\\CMS\\Extbase\\Object\\ObjectManager 无法以反斜杠开头。所以我删除了反斜杠并运行代码。但同样的问题存在。
    • 好的,你是对的......在这种情况下,问题不在于 DI(这通常/经常是在调用 null 上的成员时出现的问题),而是你如何调用验证器...我会编辑答案。
    • 我的新代码是: $validate = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Validation\\Validator\\EmailAddressValidator'); $result = $validate->isValid('xyzgmail.com'); $error = $result->hasError();但同样的错误发生
    • 你需要打电话给validate,而不是isValid$result = $validate->validate(...)validate 在内部调用 isValid,但在此之前创建 $result,然后 isValid 使用它。
    • 它是hasErrors(已在答案中修复),复数形式 - 检查答案中的链接,您也可以从中获取错误消息。
    猜你喜欢
    • 1970-01-01
    • 2019-11-07
    • 2016-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 2017-08-09
    相关资源
    最近更新 更多