Hello people. I been trying to validate a form with several product
names but haven't been succesful. The last two days were spent
searching for a way to do this but with no results either.
The thing is I have a view with a form with a single field:
product_name and the necesary code in the controller to recieve $this-
>data, and save if the data passed validation, and the model with the
validation method to check if the name is unique, not too short or too
long and not empty.

////// IN THE VIEW list_products.ctp
<?php

        echo $this->Form->create('Product');

        echo $this->Form->input('Product.product_name', array('label'
=> 'Product Name'));

        echo $this->Form->input('Product.provider_id', array('type' =>
'hidden', 'value' => 'whatever number' ));

        echo $this->Form->end('Save Product');
?>

/////// IN THE CONTROLLER function listProducts()
<?php
function listProducts()
if( !empty($this->data) )

{

$this->Product->set($this->data);



        if( $this->Product->validates($this->data) )

        {

                $this->Product->begin();

                if( $this->Product->save($this->data['Product']) )

                {

                        $this->Product->commit();

                        $this->Session->setFlash('Product Saved.');

                        $this->redirect(array('action' => 'listProducts'));

                }

                else

                {

                        $this->Product->rollback();

                        $this->Session->setFlash('Error saving product!');

                        $this->redirect(array('action' => 'listProducts'));

                }

        }
}
?>

/////// IN THE MODEL
<?php

class Product extends AppModel {

        var $name = 'Product';

        var $useTable = 'providers_product';



        var $validate = array(

                'product_name' => array(

                                'minLength'=>array(

                                        'rule' => array('minLength', 5),

                                        'message' => 'Too short',

                                ),

                                'maxLength'=>array(

                                        'rule' => array('maxLength', 200),

                                        'message' => 'Too long',

                                ),

                                'notEmpty' => array(

                                        'rule' => 'notEmpty',

                                        'message' => 'You can't leave this 
empty',

                                ),

                                'isUnique' => array(

                                        'rule'  => 'isUnique',

                                        'message' => 'Name not unique',

                                ),

                        ),

        );

}

?>

But now I have been trying to change this view so I can type 1 to 5
product names at once.
So my view now looks like this (which I found how to do it in the
cookbook):
<?php

echo $this->Form->create('Product');

        echo $this->Form->input('Product.0.product_name', array('label' =>
'Product Name'));

        echo $this->Form->input('Product.1.product_name', array('label' =>
'Product Name'));

        echo $this->Form->input('Product.2.product_name', array('label' =>
'Product Name'));

        echo $this->Form->input('Product.3.product_name', array('label' =>
'Product Name'));

        echo $this->Form->input('Product.4.product_name', array('label' =>
'Product Name'));


        echo $this->Form->input('Product.provider_id', array('type' =>
'hidden', 'value' => 'whatever number' ));

        echo $this->Form->end('Save');

?>
This way I have $this->data looking like this:
Array
(
    [Product] => Array
        (
            [0] => Array
                (
                    [product_name] => name 1
                )

            [1] => Array
                (
                    [product_name] => name 2
                )

            [2] => Array
                (
                    [product_name] => name 3
                )

            [3] => Array
                (
                    [product_name] => name 4
                )

            [4] => Array
                (
                    [product_name] => name 5
                )

            [provider_id] => whatever number
        )
)


Now, the problem is that I can't figure out how to validate $this-
>data[Product]. The model always return as if the validation was
correct and the controller proceeds to save. I know that I have to
change the controller to saveall() instead of saving a single field
but still, no matter how I set the data before validation it doesn't
validate.

Please help!!!

-- 
Our newest site for the community: CakePHP Video Tutorials 
http://tv.cakephp.org 
Check out the new CakePHP Questions site http://ask.cakephp.org and help others 
with their CakePHP related questions.


To unsubscribe from this group, send email to
[email protected] For more options, visit this group at 
http://groups.google.com/group/cake-php

Reply via email to