[英]TYPO3 Custom Validation not working
我的自定義 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;
}
}
我的問題在哪里?
我通過禁用擴展並再次激活它來轉儲自動加載緩存。 之后一切正常
嘗試將您的類 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;
}
}
停用並再次激活您的擴展和類將重新加載。
@validate
自 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
類)中的所有屬性(視圖中的字段)都已定義。更多信息:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.