Ext Multimodelform Dropdrown Compilazione Automatica Campi

Buon Giorno a Tutti,

premesso che sono un novizio di YII, lo apprezzo molto per la semplicità e velocità di utilizzo, ho una buona conoscenza del php e novizio di jquery ma il web insegna.

Mi trovo con la seguente situazione:

YII 1.1.15, utilizzo l’estensione MultiModelForm v. 6.0 (per semplicità xchè non ho ancora capito come non utilizzarla e fare tutto con yii) per inglobare in un solo form più model.

Model Contratto, ContrattoDet, ContrattoAbbo, ContrattoImpianto, Abbo, AbboDet, Impianto, ImpiantoDet

CRUD Contratto

Ho realizzato più model nel ControllerContratto che vengono utilizzati nel relativo _form e funziona tutto relgolarmente

Ho realizzato le dropdrwon del model e dei vari model dipendenti.

Del model ContrattoDet in _form ho la seguente situazione:

  • idabbodet (non visibile)

  • idabbo dropdrown che utilizza il model AbboDet

  • tipo (compilazione automatica alla selezione di idabbo)

  • testo (compilazione automatica alla selezione di idabbo)

  • prezzo (compilazione automatica alla selezione di idabbo)

  • attivo (compilazione automatica alla selezione di idabbo)

il multimodelform funziona corettamente per la prima copytemplate ma non per le successive chiedo ai rispettabili componenti della board di darmi dettagliate delucidazioni su come risolvere questo problema.

Allego le sezioni di codice

_form




    $tipo=CHtml::listData(AbbonamentiDettaglio::model()->findAll("abbo_det_attivo='y'"), 'idabbo_det', 'abbo_det_tipo', 'idabbo');

	$dettaglioFormConfig = array(

			'elements'=>array(

					//'tipo'=>array('type'=>'text','size'=>40, 'maxlenght'=>255,),

					'tipo'=>array(

							'id'=>'DETTAGLIO',

							'label'=>'TIPOLOGIA',

							'type'=>'dropdownlist',

							'items'=> $tipo,

							'ajax'=>(array(

									'type'=>'POST',

    								'url'=>CController::createURL('Contratto/Prezzo'),

									'dataType'=>'json',

									'success'=>'function(data) {

											$(\'input[name="ContrattoDet[prezzo][]"]\').each(function (i,el) {

  												var index = i; //0,1,2 etc

  												var idprezzo = $(el).attr("id"); // l\'id dell\'elemento con jQuery

												$("#"+idprezzo).val(data.returnPrezzo);

											})

											$(\'input[name="ContrattoDet[qta][]"]\').each(function (i,el) {

  												var index = i; //0,1,2 etc

  												var idqta = $(el).attr("id"); // l\'id dell\'elemento con jQuery

												$("#"+idqta).val(data.returnQTA);

											})

											$(\'input[name="ContrattoDet[testo][]"]\').each(function (i,el) {

  												var index = i; //0,1,2 etc

  												var iddescr = $(el).attr("id"); // l\'id dell\'elemento con jQuery

												$("#"+iddescr).val(data.returnDescrizione);

											})

											$(\'input[name="ContrattoDet[attivo][]"]\').each(function (i,el) {

  												var index = i; //0,1,2 etc

  												var idattivo = $(el).attr("id"); // l\'id dell\'elemento con jQuery

												$("#"+idattivo).val(data.returnAttivo);

											})

									}',

    								'error'=>'function(data){alert(val(data.returnValue));}',

    								)),

						    'prompt'=>'SELEZIONA',

							'options'=>array($dettaglio->tipo=>array('selected'=>true)),

							),

					'testo'=>array('id'=>'descrizione','label'=>'DESCRIZIONE','type'=>'text','size'=>10, 'maxlenght'=>255,),

					'qta'=>array('id'=>'qta','label'=>'QUANTITA','type'=>'text','size'=>2, 'maxlenght'=>3,),

					'prezzo'=>array('id'=>'prezzo','label'=>'PREZZO','type'=>'text','size'=>5, 'maxlenght'=>5,),

										'attivo'=>array('id'=>'attivo','type'=>'dropdownlist','items'=>array(''=>'','y'=>'SI','n'=>'NO',)),

			));

	$this->widget('ext.multimodelform.MultiModelForm',array(

			'id' => 'id_dettaglio', //the unique widget id

			'formConfig' => $dettaglioFormConfig, //the form configuration array

			'model' => $dettaglio, //instance of the form model

			'addItemText' => 'AGGIUNGI', // Indica il testo per aggiungere un elemento

			'addItemAsButton' => true, // il testo viene visualizzato come bottone

			'limitText' => 'Limite raggiunto',

			'removeText' => 'RIMUOVI',

			'removeConfirm' => 'Confermi la rimozione?',

			'removeTextAsButton' => true,

			'validatedItems' => $validateDettaglio,

			'tableView'=>true,

			'hideCopyTemplate' => true,

			'data' => $dettaglio->findAll('idcontratto=:IDcontratto', array(':IDcontratto'=>$model->idcontratto)),

	));



ContrattoController relativo alla url ajax




	public function actionPrezzo()

	{

		//if (Yii::app()->request->isAjaxRequest) {

		$abbodet=$_POST['ContrattoDet'];

		if(isset($abbodet)) {

		$abbodet = $_POST['ContrattoDet']['tipo'];

		$prezzo = AbboDet::model()->findByPk($abbodet)->abbo_det_prezzo;

		$descrizione = AbboDet::model()->findByPk($abbodet)->abbo_det_testo;

		if(isset($prezzo))

			echo CJSON::encode(array(

						'returnPrezzo'=>$prezzo,

						'returnQTA'=>'1',

						'returnDescrizione'=>$descrizione,

						'returnAttivo'=>'y',

			));

		else 

			echo CJSON::encode(array('returnValue'=>'INDEFINITO'));

		}

		else {

			echo CJSON::encode(array('returnValue'=>'QUERY NON ESEGUITA'));

		}

		//}

	}