TYPO3/Extbase - 如何在 validation/saving 对象之前 trim 值?

TYPO3/Extbase - How to trim values before validation/saving objects?

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

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

正如我所说,我有数十个字段,希望避免手动验证它...有什么解决方案吗?

注意:我尝试了 extbase_filter ext,如果它有效,这将是一个很好的解决方案(不幸的是,在 TYPO3 ver.: 6.2.6.

上没有任何效果

同样出于显而易见的原因,在表单发送之前使用 JS trimming 值也不是解决方案。

您可以在 set* 方法中执行 trim-ing。 Extabase 的 MVC 流程中的验证发生在 after set-ers invoked.

因此,您的示例将是:

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

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