Validation TYPO3/Extbase-如何在验证/保存对象之前修剪值?

Validation TYPO3/Extbase-如何在验证/保存对象之前修剪值?,validation,typo3,extbase,typo3-6.2.x,Validation,Typo3,Extbase,Typo3 6.2.x,在Extbase中,通常我自己在控制器中处理表单验证,特别是当我需要高级场景时,但现在我使用的是带有许多字段的简单但较大的表单,所以我决定不浪费时间,只使用TYPO3的验证器。到目前为止,它总体上运行良好,无论如何,我不能在验证之前强制Extbase修剪值,结果Extbase节省了大量空间。。。所以它是无效的,示例: /** * @var string * @validate StringLength(minimum=2, maximum=255) * @validate NotEmpty

在Extbase中,通常我自己在控制器中处理表单验证,特别是当我需要高级场景时,但现在我使用的是带有许多字段的简单但较大的表单,所以我决定不浪费时间,只使用TYPO3的验证器。到目前为止,它总体上运行良好,无论如何,我不能在验证之前强制Extbase修剪值,结果Extbase节省了大量空间。。。所以它是无效的,示例:

/**
 * @var string
 * @validate StringLength(minimum=2, maximum=255)
 * @validate NotEmpty
 */
protected $fooName = '';
正如我所说,我有几十个字段,希望避免手动验证它。。。有什么解决办法吗

注意:我尝试了ext,如果它能工作,这将是一个很好的解决方案(不幸的是在TYPO3版本中没有任何效果):6.2.6

另外,由于明显的原因,在表单发送之前使用JS修剪值也不是一个解决方案。

您可以在
集合*
方法中进行修剪。在调用集合ers之后,Extabase的MVC过程中进行验证

因此,你的例子是:

/**
 * @var string
 * @validate StringLength(minimum=2, maximum=255)
 * @validate NotEmpty
 */
protected $fooName = '';

public function setFooName($fooName)
{
    $this->fooName = trim($fooName);
}

没错,我是在调试后发现的;)它确保了验证是正确的(最后!)无论如何,仍然不会修剪以重新加载的形式显示的值(即使在getter中也添加了
trim()
),这可能会很棘手,但您可以在控制器中使用
$This->request->getReferringRequest()->getArgument('your_argument_name')
,在出现验证错误时,该参数不应为空。据我所知,表单中的值用作from字段的值,用于恢复用户输入。是的,我通常使用小表单来执行此操作。。。无论如何,虽然BE验证现在可以在setters中正确地使用此修剪,但是对于表单中的外观修剪,我将使用JS(类似于BE TCE表单),所以实际上这个主题现在已经为我解决了。