我需要在同一模型中根据其他字段的值验证某些字段。由于自定义验证器只能访问它正在验证的值,因此我无法检查其他验证。从检查AbstractValidator
开始,我无法找到验证当前值的对象。
是否有解决方案来验证/添加控制器中的错误,设置错误并通过保留原始例程而不是向视图引入和分配新对象来呈现实际视图?基本上我可以创建一个自定义$errors
var,在完成自定义验证并将其与原始表单错误一起显示后填充错误。但我不喜欢这种解决方法。
答案 0 :(得分:0)
添加新模型验证程序时,您可以访问该模型的其他字段
文件:test_extension / Classes / Domain / Validator / TestModelValidator.php:
class Tx_TestExtension_Domain_Validator_TestModelValidator extends Tx_Extbase_Validation_Validator_AbstractValidator {
/**
* @param Tx_TestExtension_Domain_Model_TestModel $testModel
* @return boolean
*/
public function isValid($testModel) {
/** @var $testModel Tx_TestExtension_Domain_Model_TestModel */
//Access all properties from $testModel
$field1 = $testModel->getMyField1();
$field2 = $testModel->getMyField2();
}
}
您还可以向特定字段添加错误,但此代码来自TYPO3 4.5,不知道它是否仍然有效:
$error = t3lib_div::makeInstance('Tx_Extbase_Validation_Error', 'The entered value is allready in use.', 1329936079);
$this->errors['field2'] = t3lib_div::makeInstance('Tx_Extbase_Validation_PropertyError', 'field2');
$this->errors['field2']->addErrors(array($error));