[Risolto] Problema Con Actionupdate

Ciao, premetto che ho cominciato a studiare Yii da 1 settimana, quindi mi scuso in anticipo se sparo qualche C…ta :rolleyes:

Premetto inoltre che quello che provo a creare è un progetto di test tanto per prendere confidenza con il framework.

Ho questo problema. Ho creato tramite la procedura Model Generator -> Crud Generator una serie di funzionalità (i dati sono prelevati da un db mysql).

Ho generato il primo Crud (logins) tutto perfetto, aggiorno, salvo, cancello, inserisco controlli…

Ho creato una nuova tabella nel db che si interfaccia alla prima (datiUser: id_logins,via, telefono…), anche qui ho generato il tutto tramite crud, ho modificato alcuni valori, e sembrava funzionare tutto alla perfezione eccetto che l’aggiornamento.

Ho provato a fare un print_r($model->attributes) e non mi risultano errori. Ho provato a mettere dei print a video per verificare dove si blocca il tutto e sembrerebbe andare tutto bene, anche nel beforeSave(), ma non prende $model->save(). Qualcuno ha idee in merito?

grazie

ps non ho postato codice, perchè ho modificato poche cose eccetto i controlli… inoltre il campo id_logins è stato trasformato in un suggest.

Mmmm, io vorrei dare un’occhio alle modifiche. Purtroppo non mi è chiaro che cosa non va nel tuo codice.

Nel model ho aggiunto beforeSave ed ho cambiato rules(), silenziando il primo array id_logins perchè ho bisogno di inviare uno username (text) univoco che successivamente (beforsave) viene convertito in numero.




public function rules()

	{

            return array(

		#array('id_logins', 'numerical', 'integerOnly'=>true),

		array('telefono, cellulare', 'length', 'max'=>60),

		array('id_logins, indirizzo', 'length', 'max'=>255),




public function beforeSave(){

		if($this->isNewRecord){

			// estrapolo l'id dall'utente univoco

			$idUser = Yii::app()->db->createCommand()->select('id')->from('eng_login')->where('username=:username', array(':username'=>$this->id_logins))->queryRow();

			// verifico che non inserisco 2 volte gli stessi dati

			$exists = Yii::app()->db->createCommand()->select('id')->from('dati_user')->where('id_logins=:id_logins', array(':id_logins'=>$idUser['id']))->queryRow();

			if(!$exists['id']){

				$this->id_logins = $idUser['id'];

				return parent::beforeSave();

			} else {

				$this->addError('username','Dato presente nel DB!');

			}

		}

    }

ed ho modificato la view _form




<div class="row" <?php echo ($model->isNewRecord) ? ('') : ('style="display:none;"');?>>

		<label for="id_logins">Cerca Utente (username)</label>

		<?php

			$valIdLogin = ($model->isNewRecord) ? ('') : ($model->id_logins);

			$this->widget('zii.widgets.jui.CJuiAutoComplete', array(

				'name'=>'DatiUser[id_logins]',

				'source'=>$this->SearchIntoUser(),

				'value'=>$valIdLogin,

				// additional javascript options for the autocomplete plugin

				'options'=>array(

					'minLength'=>'2',

				),

				'htmlOptions'=>array(

					'style'=>'height:20px;'

				),

			));

		?>

	</div>



Questo è tutto.

Non mi è chiaro questo passaggio: "perchè ho bisogno di inviare uno username (text) univoco che successivamente (beforsave) viene convertito in numero."

Cmq a naso credo che “l’errore” sia qui:




    public function beforeSave(){

        if($this->isNewRecord){

            ...

        }

    }



La save() funziona perché è gestita. E probabilmente non funzioni la update() proprio perché non lo è: manca un else in quell’if. Ma mi sfugge davvero tutto questo giro che fai. Non sarebbe meglio utilizzare una relazione tra i due model invece di scrivere tutto quanto quel codice? Io vedo semplicemente due model in relazione uno a uno. Dunque perché cerchi a mano il record nell’altra tabella?

Hai ragione era proprio nel else!!! Eppure ho provato a silenziare tutto il beforSave(). Boh? Ok grazie

Per quanto riguarda i vari passaggi, un pochino di inesperienza, un pochino perchè cerco di capire come applicare gli script in generale…

sto buttando codice alla buona per prendere dimestichezza con lo script, poi anche grazie ai vostri (in questo caso tuoi) consigli cercherò di applicare il MANY_MANY (se non erro)…

In verità è tutto quanto scritto nell’yiidoc che si scarica insieme al framework. Alcune cose non sono esattamente chiare e te le insegnano l’esperienza ed un buon thread in questo forum. Hai letto la documentazione?

Leggo la documentazione ‘online’ un po’ alla volta… purtroppo (per me) se non metto subito in pratica gli esempi li dimentico subito ::)

Ancora grazie!