typo3 extbase: какво се случи с forProperty в валидатор?

Имам модел, нека го наречем Entry. И създадох EntryValidator за валидиране на някои полета. Например полето "име" не трябва да е празно. Мога да добавя грешка като тази:

public function isValid($entry) {

    if(!$entry->getName() || trim($entry->getName()) == ''){
        $this->addError('name must not be empty', 111);
    }
}

но как мога да присвоя тази грешка на полето "име"? Опитах се да го потърся в Google и това, което намирам отново и отново, е следното:

$this->result->forProperty('name')->addError($error);

Но това вече не работи (използвам typo3 6.2). И намирам улики как да направя това сега.

Благодаря!


person Chi    schedule 19.11.2015    source източник
comment
Какво имаш предвид като не работиш? Няма изход във Fluid или валидирането не се случва? Използвам $this->result->forProperty() в TYPO3 7 и работи там. Също така с TYPO3 6.2 съм почти сигурен, че също работи. Можете ли да опитате да използвате дебъгер и да предоставите повече информация?   -  person Viktor Livakivskyi    schedule 20.11.2015


Отговори (1)


трябва да добавите return false и true към вашия метод isValid.

public function isValid($entry) {

    if(!$entry->getName() || trim($entry->getName()) == ''){
        $this->addError('name must not be empty', 111);
        return false;
    }
    return true;
}

или използване с Error Object

 $this->result->forProperty('name')->addError(
                        new \TYPO3\CMS\Extbase\Error\Error(
                            $this->translateErrorMessage(
                                'key',
                                'ExtKey',
                                array()
                            ),
                            111)
                    );
person Mario Naether    schedule 21.11.2015