【问题标题】:TYPO3/Extbase - How to trim values before validation/saving objects?TYPO3/Extbase - 如何在验证/保存对象之前修剪值?
【发布时间】:2015-11-11 18:32:05
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: validation typo3 extbase typo3-6.2.x


    【解决方案1】:

    您可以在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);
    }
    

    【讨论】:

    • 是的,我只是在调试后才发现它;)它确保验证是正确的(终于!)无论如何仍然不会修剪以重新加载的形式显示的值(即使使用trim()也添加到吸气剂中)。
    • 这可能很棘手,但您可以在 Controller 中使用$this->request->getReferringRequest()->getArgument('your_argument_name'),如果验证错误,它不应该为空。据我了解,那里的值形式用作字段的值以恢复用户输入。
    • 是的,我通常使用小型表单...无论如何,BE 验证现在可以在设置器中使用此修剪正常工作,然后对于表单中的 cosmetic 修剪,我将使用JS(类似于 BE TCE 表单)所以实际上这个话题现在已经为我解决了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 2019-04-19
    相关资源
    最近更新 更多