0

同じモデル内で、他のフィールドの値に基づいていくつかのフィールドを検証する必要があります。カスタムバリデーターは検証中の値にしかアクセスできないため、そこで他の検証を確認することはできません。を調べAbstractValidatorたところ、現在の値が検証されているオブジェクトに到達する可能性が見つかりませんでした。

ビューに新しいオブジェクトを導入して割り当てる代わりに、元のルーチンを維持することにより、コントローラーでエラーを検証/追加し、エラーを設定し、実際のビューをレンダリングするソリューションはありますか? 基本的に、カスタム変数を作成し、$errorsカスタム検証を行った後にエラーを入力し、元のフォーム エラーとともに表示することができます。しかし、私はその回避策が好きではありません。

4

1 に答える 1

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));
于 2013-02-26T14:41:41.247 に答える