在 Extbase 中,我通常在 Controller 中自己处理表单验证,特别是当我需要高级场景时,但现在我有简单但包含许多字段的大型表单,所以我决定不浪费时间,只使用 TYPO3 的验证器。到目前为止,总的来说它是有效的,无论如何我不能强制 Extbase 在验证之前修剪值,结果 Extbase 节省了大量空间......所以它是无效的,示例:
/**
* @var string
* @validate StringLength(minimum=2, maximum=255)
* @validate NotEmpty
*/
protected $fooName = '';
正如我所说,我有数十个字段,并且希望避免手动验证它......有什么解决方案吗?
注意:我尝试过extbase_filter
ext,如果它有效的话,这将是一个很好的解决方案(不幸的是在 TYPO3 版本:6.2.6 上没有任何效果。
出于显而易见的原因,在表单发送之前使用 JS 来修剪值也不是一个解决方案。
最佳答案
您可以在 set*
方法中进行修剪。 Extabase 的 MVC 流程中的验证发生在调用set-ers之后。
所以,你的例子是:
/**
* @var string
* @validate StringLength(minimum=2, maximum=255)
* @validate NotEmpty
*/
protected $fooName = '';
public function setFooName($fooName)
{
$this->fooName = trim($fooName);
}
关于validation - TYPO3/Extbase - 如何在验证/保存对象之前修剪值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33657431/