Model view controller Typo3验证器返回对成员函数addError()的调用,该函数为null
我有一个流动的表单。编辑完成后,一个ajax调用被传递给控制器 我创建了一个EmailAddressValidator()的实例。下面给出了我的代码Model view controller Typo3验证器返回对成员函数addError()的调用,该函数为null,model-view-controller,typo3,extbase,Model View Controller,Typo3,Extbase,我有一个流动的表单。编辑完成后,一个ajax调用被传递给控制器 我创建了一个EmailAddressValidator()的实例。下面给出了我的代码 $validate = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Validation\\Validator\\EmailAddressValidator'); $result = $validate->isValid('xyz@gm
$validate = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Validation\\Validator\\EmailAddressValidator');
$result = $validate->isValid('xyz@gmail.com');
如果电子邮件格式正确,它将不返回任何内容。但它会返回
调用成员函数addError()
如果格式不正确。(已更新)
问题是如何调用验证器。您需要调用方法validate
,而不是isValid
因此,这应该是可行的:
$validate = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Validation\\Validator\\EmailAddressValidator');
$result = $validate->validate('xyz@gmail.com');
$result
是的一个实例,您可以使用其上的方法hasrerrors
检查邮件是否有效。(已更新)
问题是如何调用验证器。您需要调用方法validate
,而不是isValid
因此,这应该是可行的:
$validate = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Validation\\Validator\\EmailAddressValidator');
$result = $validate->validate('xyz@gmail.com');
$result
是的一个实例,您可以在其上使用方法hasrerrors
检查邮件是否有效。TYPO3\\CMS\\Extbase\\Object\\ObjectManager无法以反斜杠开头。因此,我删除了反斜杠并运行代码。但也存在相同的问题。好的,您是对的。。。在这种情况下,问题不在于DI(这通常是/通常是在null
上调用成员时的问题),而是如何调用验证器。。。我将编辑答案。我的新代码是:$validate=\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Validation\\Validator\\EmailAddressValidator')$结果=$validate->isValid('xyzgmail.com')$error=$result->hasrerror();但是同样的错误也会发生,您需要调用validate
,而不是isValid
:$result=$validate->validate(…)
validate
在内部调用isValid
,但在这样做之前创建$result
,然后使用isValid
。它是hasErrors
(在答案中修复了它),复数形式-检查答案中的链接,您也可以从中获取错误消息。TYPO3\\CMS\\Extbase\\Object\\ObjectManager无法以反斜杠开头。因此,我删除了反斜杠并运行代码。但存在相同的问题。好的,您是对的。。。在这种情况下,问题不在于DI(这通常是/通常是在null
上调用成员时的问题),而是如何调用验证器。。。我将编辑答案。我的新代码是:$validate=\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Validation\\Validator\\EmailAddressValidator')$结果=$validate->isValid('xyzgmail.com')$error=$result->hasrerror();但是同样的错误也会发生,您需要调用validate
,而不是isValid
:$result=$validate->validate(…)
validate
在内部调用isValid
,但在这样做之前创建$result
,然后使用isValid
。它是hasrerrors
(在答案中修复了它),复数形式-检查答案中的链接,也可以从中获取错误消息。