【问题标题】:Typo3 Unsupported validation option(s) foundTypo3 找到不支持的验证选项
【发布时间】:2014-11-13 11:33:15
【问题描述】:

我正在处理来自typo3 扩展书的示例,并且我正在创建自己的验证器。 在我的控制器中,我放置了以下内容:

/**
* Title of the blog
*
* @var string
* @validate NotEmpty, \Lobacher\Simpleblog\Validation\Validator\WordValidator(max=3)
*/
protected $title = '';

在文件 simpleblog\Validation\Validator\WordValidator.php 中是这样的代码:

<?php
namespace Lobacher\Simpleblog\Validation\Validator;

class WordValidator extends \TYPO3\CMS\Extbase\Validation\Validator\AbstractValidator {
    public function isValid($property) {
        $max = $this->options['max'];

        if (str_word_count($property, 0) <= $max)
        {
            return TRUE;
        }
        else
        {
            $this->addError('Verringern Sie die Anzahl der Worte - es sind maximal '. $max .' erlaubt!', 1383400016);
            return FALSE;
        }
    }
}
?>

但是,如果我尝试编辑一个条目,typo3 说:找到不支持的验证选项:最大

我做错了什么?

【问题讨论】:

    标签: validation properties typo3 fluid extbase


    【解决方案1】:

    您必须添加一个受保护的成员 $supportedOptions,该成员定义了您的验证器的允许参数。

    这个成员必须是一个关联数组,选项名称作为键,选项配置作为值。选项配置是数字索引的数组,其中数组项的含义如下:

    • 索引 0:选项的默认值(混合)
    • 索引 1:选项描述(字符串)
    • 索引 2:选项的类型(字符串,值为“字符串”、“整数”等)
    • 索引 3:是否需要该选项(布尔值,可选)。

    来自NumberRangeValidator 的示例,未使用第四个选项:

    protected $supportedOptions = array(
        'minimum' => array(0, 'The minimum value to accept', 'integer'),
        'maximum' => array(PHP_INT_MAX, 'The maximum value to accept', 'integer'),
        'startRange' => array(0, 'The minimum value to accept', 'integer'),
        'endRange' => array(PHP_INT_MAX, 'The maximum value to accept', 'integer')
    );
    

    【讨论】:

    • 是的,这行得通,谢谢。但是,如果我尝试编辑包含三个以上单词的条目,typo3 会抛出一个异常:“尝试调用 Lobacher\Simpleblog\Controller\BlogController->updateFormAction() 时发生错误。”如果我尝试创建一个新条目,一切正常。
    • 如果从数据库中获取存储对象时发生验证错误,通常会引发该异常。我还没有找到真正调试它的解决方案。如果发生这种情况,我会一一删除对类成员的所有验证,然后查看问题何时消失。也许您可以通过检查可能出错的验证来加快速度。
    • 我找到了解决方案。我将“@ignorevalidation $blog”添加到 updateForm 操作中,现在一切正常。
    • 但这会禁用博客的验证...不是一个好主意。还是updateAction 是显示编辑博客表单的操作?
    • 我有两个动作,updateFormAction 和 updateAction。 updateFormAction 显示表单,updateAction 更新存储库中的条目。
    猜你喜欢
    • 2021-09-21
    • 1970-01-01
    • 2012-04-15
    • 2021-10-25
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 2018-08-16
    相关资源
    最近更新 更多