[Yii1][Risolto]Problema con il Form

A rieccomi per chiedere aiuto, visto che non ne esco fuori.

Ho creato questo form che NON voglio validare, perchè non deve inserire nulla nel database.

Mi serve solo per fare calcoli, tramite javascript.

Model che gestisce il form:




<?php

class CalcolarestoForm extends CFormModel

{

	public $totale;

	public $importoricevuto;

	public $resto;





 public function tableName()

	{

		return 'missiva';

	}

	

	public function rules()

	{

		// NOTE: you should only define rules for those attributes that

		// will receive user inputs.

		return array(

			array('resto, importoricevuto, totale', 'numerical'),

			);

	}

	

}



Form:




altri dati di visualizzazione di alcuni risultati tramite funzioni che si trovano nel model.

................................................


                 <tr class="table_data_header">

                 <?php $form=$this->beginWidget('CActiveForm');?>

                  <td class="table_data_l" colspan="3">Totale

                 </td>

                 <td class="table_data">

                 <?php 

				 $model->totale = Missiva::SommaTotali();

				 echo $form->textField($model, 'totale', array('id'=>'totale', 'name'=>'totale'))?>

                 </td>

                 </tr>


                 <tr class="table_data_header">

                 <td class="table_data_l" colspan="3">Importo Ricevuto

                 </td>

                 <td class="table_data">

                 <?php echo $form->textField($model, 'importoricevuto', array('id'=>'importoricevuto', 'name'=>'importoricevuto'))?>

                 </td>

                 </tr>

                 

                 

                 <tr class="table_data_header">

                 <td class="table_data_l" colspan="3">Resto

                 </td>

                 <td class="table_data">

                 <?php 

				 echo $form->textField($model, 'resto', array('id'=>'resto', 'name'=>'resto'))?>

                 </td>

                 </tr>                 


                 

             


		<tr class="table_data_footer">

			<td colspan=3 class="table_last_lr">

            <center><?php echo CHtml::submitButton('Il Cliente ha Pagato', array('class'=>'btn btn-primary', 'submit' => array('ConfermaSessione'))); ?> 


            <?php echo CHtml::submitButton('Continua a Postalizzare',array('class'=>'btn btn-success', 'name'=>'nuovapostalizzazione')); ?> </center>

            <?php $this->endWidget()?>




            </td>

		</tr>

</tbody>

</table>



Al click sui pulsanti non succede nulla!!!

Azione che visualizza il form nella pagina:




		public function actionCassa()

	{  

					

	    $this->layout="//layouts/benvenuto";

		$this->performAjaxValidation($model);

	    $model =new CalcolarestoForm;

	    if(isset($_POST['CalcolarestoForm']))

		{

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

			$model->save(false);

			

				if(Yii::app()->user->checkAccess('Cassa')!=Yii::app()->user->id){

				$this->redirect('nessunacassa');

				

			}

		}else{	


	

		$this->render('cassa',array('model' => $model,));

	}

			}



Action ConfermaSessione nel controller:




	public function actionConfermaSessione()

	{

	$this->performAjaxValidation($model);

	$eliminasolosessioneutente=Yii::app()->user->id;

	$query = "DELETE FROM sessione WHERE operatore_id=$eliminasolosessioneutente";

	

    $command = Yii::app()->db->createCommand($query);

    $command->execute(array('model' => $model,));


	$this->redirect(array('/site/index'));

		

		}



Action NuovaPostalizzazione nel controller:




	//NUOVA POSTALIZZAZIONE

		public function actionNuovaPostalizzazione()

	{

		$this->layout='//layouts/benvenuto';	

		$this->render('prodotti-postali', array('model'=>$model,));

			}



Ho anche provato a inserire




.................

$model = new CalcolarestoForm;

........etc etc etc 



ma non funziona lo stesso!!!!

Praticamente al click sui pulsanti mi ricarica la stessa pagina "cassa".

Help please…il cervello fuma. :-[

Non avendo tempo di provare il tuo codice, ma leggendolo al volo, la prima cosa che mi viene in mente (e la più stupida) è che isset($_POST[‘CalcolarestoForm’] non passi la validazione.

Hai fatto debug per vedere se ti entra dentro quell’if?

Ciao SomethingWicked, non ho fatto il debug,

ma sono sicuro che il problema sia proprio li, perchè prima di aggiungere quel form tutto funzionava a meraviglia.

Nonostante tutto non capisco perchè non passi la validazione, visto che non ho nessuna regola "proibitiva" e anche i campi non sono obbligatori. Stasera provo a debuggare e vedo cosa mi esce fuori.

Intanto grazie per la tua risposta :)

Risolto, l’ errore era sui pulsanti e sul controller.

Infatti, come supponevo NON dovevo validare nulla, ma dovevo solo far capire a Yii come comportarsi.

Quindi l’ actionCassa nel controller è diventata cosi:




public function actionCassa()

	{  

					

	    $this->layout="//layouts/benvenuto";

	    $model =new CalcolarestoForm;

		

		if(Yii::app()->user->checkAccess('Cassa')!=Yii::app()->user->id){

				$this->redirect('nessunacassa');

			

			

		}else{

		$this->render('cassa',array('model' => $model));


			}

if (isset($_POST['il-cliente-ha-pagato'])) 

		{

  $this->redirect(array('ConfermaSessione'));

		}

		

		if (isset($_POST['continua-a-postalizzare'])) 

		{

  $this->redirect(array('NuovaPostalizzazione'));

		}

	}



dove faccio capire a Yii come comportarsi in base al click sui pulsanti.

E i pulsanti li ho modificati cosi:




...............

<?php echo CHtml::submitButton('Il Cliente ha Pagato', array('name'=>'il-cliente-ha-pagato', 'class'=>'btn btn-primary')); ?>

            <?php echo CHtml::submitButton('Continua a Postalizzare', array('name'=>'continua-a-postalizzare', 'class'=>'btn btn-success')); ?>



Ci ho perso 1 giorno per capire!!! Si pensa sempre a cose complicate quando invece la soluzione è semplice. Mi ero fissato sul mancato passaggio della validazione (anche se sapevo bene che non dovevo validare nulla ma solo visualizzare il form) e tutto questo mi ha allontanato dalla soluzione. Vabbè…l’ inesperienza…non aiuta. CiauZzZZz