For reference I have created a ticket in trac here:
https://trac.cakephp.org/ticket/5715

On Nov 6, 5:23 pm, Joel <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I've run into a frustrating problem, I'm trying to validate an array
> of the same type of model, but the
>
> I have used the name convention as suggested 
> here:http://manual.cakephp.org/complete/181/Core-Helpers#Field-naming-conv...
>
> eg:
>
> <?php
>    echo $form->input('fieldname.1');
>    echo $form->input('fieldname.2');
> ?>
> <input type="text" id="ModelnameFieldname1" name="data[Modelname]
> [fieldname][1]">
> <input type="text" id="ModelnameFieldname2" name="data[Modelname]
> [fieldname][2]">
>
> The problem is when I do model.saveAll() it screws up because it
> expects the data in this format:
> data[1][Modelname][fieldname]
> data[2][Modelname][fieldname]
>
> I know that is the expected model because of the comment above the
> saveAll function:
> @param array $data Record data to save.  This can be either a
> numerically-indexed array (for saving multiple records of the same
> type), or an array indexed by association name.
>
> But validation errors won't display in the saveAll format.
>
> Because validationErrors array ends up looking like:
> [ModelName][1][field] = "error message"
> [ModelName][2][field] = "error message"
>
> But for the FormHelper to display the errors it needs to look like
> this:
> [ModelName][field][1] = "error message"
> [ModelName][field][2] = "error message"
>
> So I have managed to work around it by using this in the view:
>    echo $form->input('Model.fieldname.1');
>    echo $form->input('Model.fieldname.2');
>
> And then I have a function that converts the $this->data for saveAll:
>
>    function _prepareDataForValidation($data) {
>       $fixedData = array();
>
>       foreach ($data as $model => $fields) {
>          foreach ($fields as $field => $values) {
>             foreach ($values as $id => $value) {
>                $fixedData[$id][$model][$field] = $value;
>             }
>          }
>       }
>
>       return $fixedData;
>    }
>
> And another function that puts the validationErrors in the right
> format:
>
>    function _fixValidationErrorsArray($validationErrors) {
>       $newValidationErrors = array();
>
>       foreach($validationErrors as $key => $fields) {
>          foreach ($fields as $field => $value) {
>                 $newValidationErrors[$field][$key] = $value;
>          }
>       }
>
>       return $newValidationErrors;
>    }
>
> Should I log this as a bug in trac?
>
> I really think FormHelper should be changed to be in this format:
>
> <?php
>    echo $form->input('Model.1.fieldname');
>    echo $form->input('Model.2.fieldname');
> ?>
>
> instead of
>
> <?php
>    echo $form->input('Model.fieldname.1');
>    echo $form->input('Model.fieldname.2');
> ?>
>
> https://trac.cakephp.org/ticket/4981is similar to this, except I
> don't have the belongs to association.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to