2015-11-11 56 views
3

在Extbase中,我通常会在控制器中自己处理表单验证,特别是当我需要高级场景时,但现在我已经很简单,但是有很多字段的大表单,所以我决定不浪费时间,只是使用TYPO3的验证器。到目前为止好,一般它的工作原理,反正我不能强迫Extbase验证之前和结果Extbase节省了大量的空间,以调节值...所以它是无效的,样本:TYPO3/Extbase - 如何在验证/保存对象之前修改值?

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

正如我说我有几的领域,并希望避免手动验证它...有没有解决方案?

注:我试过extbase_filter内线,这将是伟大的解决方案,如果它的工作(可惜不采取在TYPO3任何影响版本:6.2.6

也使用JS的前修整值明显的原因。形式发送是没办法了。

回答

8

你可以做装饰-INGset*方法中。验证在Extabase的MVC过程发生集-ERS调用。

所以,你的例子是:

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

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

这是正确的,我只是一些调试后发现它;)它确保验证是正确的(最终)反正仍然没有修剪其显示在重新加载值!形式(甚至将'trim()'添加到getters中)。 – biesior

+0

这可能会很棘手,但是你可以在Controller中使用'$ this-> request-> getReferringRequest() - > getArgument('your_argument_name')'在验证错误的情况下不应该为空。据我所知,这里的价值形式被用作从字段的值来恢复用户输入。 –

+1

是的,我通常使用小形式......无论如何,虽然BE验证现在可以正确使用setter中的这种修剪,然后在表单中使用_cosmetic_修剪,我将使用JS(类似于BE TCE形式),所以实际上这个主题是现在为我解决。 – biesior

相关问题