[TYPO3-mvc] yes, nested objects validation is a missing feature at current extbase version (1.3)
Alisha
mail at alisha-huber.de
Fri Oct 21 13:50:07 CEST 2011
Hi Eric,
I have already this snippet in the template, the problem must have
another cause. Can you write your example-class and other snippets you
use? That should work with 1:1 Relation?
Thank you!
Alisha
Am 21.10.2011 00:39, schrieb Eric S. Auchterberge:
> Hi Alisha,
>
> You can easily access validation errors using Form.erros view helper.
> As I have some nested objects I need to even access errors of each
> propertyError object, somthing like:
>
> In main template:
>
> <f:render partial="FormErrors" />
>
> and at FormErrors.html :
>
> <f:form.errors>
> <div class="error">
> <h4>
> Following fields has errors:
> </h4>
> <ul>
> <f:for each="{error.errors}" as="errorDetail">
> <f:for each="{errorDetail.errors}" as="subErrorDetail">
>
> ...
>
> Greetings,
> Eric
>
> On Thu, Oct 20, 2011 at 6:03 PM, Alisha<mail at alisha-huber.de> wrote:
>
>> I have a class Tx_xx_Domain_Validator_**CoupleValidator
>> as described by you. I do not know what I must do even more.
>>
>> in my update action I use:
>> @validate $couple Tx_xx_Domain_Validator_**CoupleValidator
>>
>> But how do I get the errors?
>>
>> in the update action I tried:
>> $errors = $this->errors();
>> $errors = $this->request->getErrors();
>> if($errors){
>> foreach ($errors as $error){
>> foreach($error->getErrors() as $e) {
>> $this->flashMessages->add($e->**getMessage());
>> }}}
>>
>> but it do not work ..
>>
>> the only error : An error occurred while trying to call Tx_xx_Controller_*
>> *CoupleController->**updateAction()
>>
>> Regards
>> Alisha
>>
>> Couple has a 1:1 relation zu appM
>>
>> my validator-class:
>> class Tx_Dancestudio_Domain_**Validator_CoupleValidator extends
>> Tx_Extbase_Validation_**Validator_AbstractValidator {
>>
>>
>> /**
>> * @var $objectManager Tx_Extbase_Object_**ObjectManager
>> */
>> protected $objectManager;
>>
>> public function injectObjectManager(Tx_**Extbase_Object_ObjectManager
>> $objMgr) {
>> $this->objectManager = $objMgr;
>> }
>> /**
>> * Checks if the given value is valid according to the validator.
>> *
>> * If at least one error occurred, the result is FALSE and any errors
>> can
>> * be retrieved through the getErrors() method.
>> *
>> * Note that all implementations of this method should set
>> $this->errors() to an
>> * empty array before validating.
>> *
>> * @param mixed $value The value that should be validated
>> * @return boolean TRUE if the value is valid, FALSE if an error occured
>> */
>> public function isValid($value) {
>> if(!is_object($value) || !$value instanceof
>> Tx_Dancestudio_Domain_Model_**Couple) {
>> return FALSE;
>> }
>>
>> $appMValidator = $this->objectManager->get('Tx_**
>> Extbase_Validation_**ValidatorResolver')->**getBaseValidatorConjunction('*
>> *Tx_Dancestudio_Domain_Model_**Application');
>> if (!$appMValidator->isValid($**value->getAppM())) {
>> $this->errors[] = $this->createPropertyError('**appM',
>> $appMValidator->getErrors());
>>
>> }
>>
>>
>>
>> return count($this->errors) == 0;
>> }
>>
>> /**
>> * @param string $propertyName
>> * @param array $errors
>> * @return Tx_Extbase_Validation_**PropertyError
>> */
>> protected function createPropertyError($**propertyName, array $errors)
>> {
>> $error = new Tx_Extbase_Validation_**PropertyError($propertyName);
>> $error->addErrors($errors);
>> return $error;
>> }
>> }
>> ______________________________**_________________
>> TYPO3-project-typo3v4mvc mailing list
>> TYPO3-project-typo3v4mvc@**lists.typo3.org<TYPO3-project-typo3v4mvc at lists.typo3.org>
>> http://lists.typo3.org/cgi-**bin/mailman/listinfo/typo3-**
>> project-typo3v4mvc<http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-project-typo3v4mvc>
>>
More information about the TYPO3-project-typo3v4mvc
mailing list