TYPO3自定义验证无效

时间:2017-04-06 08:04:59

标签: php validation typo3 extbase

我的自定义Extbase验证无效。 我得到以下错误。

版本TYPO3 7.6.16

我试图验证输入。

Invalid validate annotation in VENDOR\ex\Domain\Model\GpSubscriber::salutation: Could not resolve class name for validator ""

我的模特GpSubscriber.php

<?php
namespace VENDOR\ex\Domain\Model;

/**
* GpSubscriber
*/
class GpSubscriber extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
/**
 * salutation
 *
 * @var string
 * @validate \VENDOR\ex\Domain\Validator\SalutationValidator
 */
protected $salutation = '';

我的验证员SalutationValidator.php

<?php
namespace VENDOR\ex\Domain\Validator;


class SalutationValidator extends \TYPO3\CMS\Extbase\Validation\Validator\AbstractValidator {
public function isValid($value) {
    if ($value == 'false') {
        $this->addError('error.');
        return FALSE;
    }
    return TRUE;
}
}

我的问题在哪里?

3 个答案:

答案 0 :(得分:1)

尝试将您的课程SalutationValidator移至extension / Validation / Validator / SalutationValidator.php

<?php
namespace VENDOR\ex\Domain\Model;

/**
* GpSubscriber
*/
class GpSubscriber extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{

    /**
     * salutation
     *
     * @var string
     * @validate \VENDOR\ex\Validation\Validator\SalutationValidator
     */
    protected $salutation = '';

<?php
namespace VENDOR\ex\Validation\Validator;

class SalutationValidator extends \TYPO3\CMS\Extbase\Validation\Validator\AbstractValidator {

    /**
     * The given value is valid if it contains not more then max items
     *
     * @param mixed $value The value that should be validated
     * @return void
     */
    public function isValid($value) {
        if ($value == 'false') {
            $this->addError('error.');
            return FALSE;
        }
    return TRUE;
    }
}

取消激活并再次激活您的扩展程序,并重新加载类。

答案 1 :(得分:1)

我通过禁用扩展程序并再次激活它来转储自动加载缓存。之后一切正常

答案 2 :(得分:0)

从9.3版开始不推荐使用

@validate。在7岁以上的人群中,请使用@TYPO3\CMS\Extbase\Annotation\Validate

示例:

use TYPO3\CMS\Extbase\Annotation as Extbase;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;

class GpSubscriber extends AbstractEntity {

    /**
     * @var string
     * @Extbase\Validate("VENDOR\ex\Domain\Validator\SalutationValidator")
     */
    protected $title;

...
}

这样,您仍然可以将验证器存储在Model/Validator目录中。

如果您选择将验证器存储在扩展程序的Validation/Validator下,则可以选择使用@Extbase\Validate("VENDOR.ex:Salutation")@Extbase\Validate("VENDOR\ex\Validation\Validator\SalutationValidator")访问验证器。

注释:

  • 确保@Extbase\Validate中的验证者名称空间不启动 斜线。
  • 确保所有已定义属性的获取器和设置器。
  • 确保模型中的所有属性(视图中的字段)(在这种情况下) 类GpSubscriber)已定义。

更多信息: