Validation In Array Of Model Does Not Work

Hi,

I have problem in validation of array model:




 public function actionCreate() {

        $model = new Requisition;

        $details = array(new Detail);


        // Uncomment the following line if AJAX validation is needed

        $this->performAjaxValidation(array($model, $details));


        if (isset($_POST['Requisition']) && isset($_POST['Detail'])) {

            $model->attributes = $_POST['Requisition'];

            $model->reqDate = date('Y-m-d');

            $model->status = Requisition::DRAFT;


            $val = $model->validate();


            // Details

            $inputDetails = array_values($_POST['Detail']);

            foreach ($inputDetails as $idx => $inputDetail) {

                $details[$idx] = new Detail;

                $details[$idx]->attributes = $inputDetail;


                $val = $val && $details[$idx]->validate();

            }


            if ($val) {

                $model->save(false);


                // saving details

                // ...


                Yii::app()->user->setFlash('success', "Succes.");

                $this->redirect(array('view', 'id' => $model->id));

            } else {

                Yii::app()->user->setFlash('error', 'Failed!');

            }

        }


        $this->render('create', array(

            'model' => $model,

            'details' => $details,

        ));

    }



Validation for Requisition model is working, but error in array of Detail (=$details) does not appear.

Can anyone help me on this?

Thank you in advance.

Daniel

Got an idea from searching the forum more thoroughly,




        ....

        $model = new Requisition;

        $details = array(new Detail);


        if (isset($_POST['Requisition']) && isset($_POST['Detail'])) {

            $model->attributes = $_POST['Requisition'];

            $model->reqDate = date('Y-m-d');

            $model->status = Requisition::DRAFT;


            // Details

            $inputDetails = array_values($_POST['Detail']);

            foreach ($inputDetails as $idx => $inputDetail) {

                $details[$idx] = new Detail;

                $details[$idx]->attributes = $inputDetail;

            }


            $valDetails = CActiveForm::validateTabular($details);


            if ($model->validate() && empty($valDetails)) {

            ...



Any feedback on this? It worked but I am not sure whether it is correct or not…