Yii Framework Forum: dropDownList scambio id descrizione - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

dropDownList scambio id descrizione Rate Topic: -----

#1 User is offline   cardinal 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 11-January 11

Posted 24 January 2011 - 07:08 AM

Ciao a tutti
la domanda sarà sicuramente stupidina
ma ho il form creato da gii
sono riuscito a modificarlo mettendoci
uan dropDownList con id e descrizione
ora il mio problema è salvare l' id.


Come e dove lo reperisco?

mi spiego meglio ho una tabella utenti e tipoUtenti
con relativi model e quant altro

sul form crea utenti
ho messo la dropDownList con la desc4rizione del tipo utente(sull' altra tabella ovviamente)
ora però mi serve di salvare l' id su utenti. Le due tabelle sono relazionate.


questa è la mia action
public function actionCrea()
	{
		$model=new Utenti;

		// Uncomment the following line if AJAX validation is needed
		 //$this->performAjaxValidation($model);

		if(isset($_POST['Utenti']))
		{
			$model->attributes=$_POST['Utenti'];
			if($model->save())
				$this->redirect(array('view','id'=>$model->idUtentiPK));
		}

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


e questo il from di utenti
<div class="row">
		<?php echo $form->labelEx($model,'tipoUtente.descrizioneTipoUtente'); ?>
		<?php $models = TipoUtente::model();  
    
 		// format models resulting using listData     
     		$list = CHtml::listData($models->findAll(), 'idTipoUtente', 'descrizioneTipoUtente');

		echo CHtml::dropDownList('TipoUtente', $TipoUtente, $list, array('empty' => '(Seleziona'));  ?>
		<?php echo $form->textField($model,'idTipoUtenteFK'); ?>
		<?php echo $form->error($model,'idTipoUtenteFK'); ?>
	</div>



nel quale per altro ho inserito il caricamento dell' altra tabella per fare la dropDownList non so se sia corretto.


Grazie
0

#2 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,986
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 24 January 2011 - 08:20 AM

Credo che tu debba studiarti le roles e modificarle nel model.
0

#3 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,986
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 24 January 2011 - 08:25 AM

Ti mostro che cosa ho fatto io per risolvere un problema molto simile al tuo:

    <tr>
      <td width="50%" align="right"><?php echo $form->labelEx($model,'stato'); ?></td>
      <td width="50%" align="left"><?php echo $form->dropDownList($model,'stato',array(
        'nuovo'=>'nuovo',
        'usato'=>'usato',
        )); ?></td>
    </tr>


In pratica, seguendo le regole di Yii dovrai scrivere qualche cosa tipo

$form->dropDownList($model,'idTipoUtente',tipoUtente::model()->findAll());


Sono andato a sentimento. Questi per farti capire che devi usare "$form->".
0

#4 User is offline   cardinal 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 11-January 11

Posted 24 January 2011 - 09:54 AM

sìììì
ce l' ho fatta grande senso
0

#5 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,986
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 25 January 2011 - 04:30 AM

Io ho fatto così:

  <?php
    /* Definizione dell'array dei commerciali */
    $commerciali = Commerciali::model()->findAll(array('order' => 'cognome,nome',));
    $commerciale = array();
    foreach ($commerciali as $comm) $commerciale[$comm->id] = $comm->cognome ." ". $comm->nome;
  ?>

	<div class="row">
		<?php echo $form->labelEx($model,'id_commerciale'); ?>
		<?php echo $form->dropdownList($model,'id_commerciale',$commerciale); ?>
		<?php echo $form->error($model,'id_commerciale'); ?>
	</div>


Come vedi carico tutti i commerciali e poi li metto nella dropdownList. Però non mi è chiaro come mai non mi ha preso direttamente
Commerciali::model()->findAll(array('order' => 'cognome,nome',))

0

#6 User is offline   markux 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 106
  • Joined: 26-November 10
  • Location:Grosseto

Posted 26 January 2011 - 12:54 AM

View Postsensorario, on 25 January 2011 - 04:30 AM, said:

Io ho fatto così:

  <?php
    /* Definizione dell'array dei commerciali */
    $commerciali = Commerciali::model()->findAll(array('order' => 'cognome,nome',));
    $commerciale = array();
    foreach ($commerciali as $comm) $commerciale[$comm->id] = $comm->cognome ." ". $comm->nome;
  ?>

	<div class="row">
		<?php echo $form->labelEx($model,'id_commerciale'); ?>
		<?php echo $form->dropdownList($model,'id_commerciale',$commerciale); ?>
		<?php echo $form->error($model,'id_commerciale'); ?>
	</div>


Come vedi carico tutti i commerciali e poi li metto nella dropdownList. Però non mi è chiaro come mai non mi ha preso direttamente
Commerciali::model()->findAll(array('order' => 'cognome,nome',))



prova ad aggiungere :

$commerciali = Commerciali::model()->findAll(array('select'=>'id,nome,cognome', 'order' => 'cognome,nome'));


consigliato anche per questioni di performance (evitare sempre di eseguire query con select *)
inoltre ti consiglio di creare una funzione nel model tipo getCommercialiNomeCognome e richiamarla dal controller per mantenere la struttura MVC
0

#7 User is offline   zaccaria 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 2,232
  • Joined: 04-October 09
  • Location:Moscow

Posted 26 January 2011 - 01:56 AM

Devi usare CHtml::ActiveDropDownList, non CHtml::dropdownlist:

 echo CHtml::activedropDownList($model, 'TipoUtente', $list, array('empty' => '(Seleziona'));  ?>


Il fatto e' che CActiveForm (il nostro $form) ha dei metodi che si chiamano dropdownlist, textfied ma sono solo dei wrapper per CHtml::ACTIVEdropdownlist, CHtml::ACTIVEtextfied.

Questa scelta un po' infelice porta a molte incomprensioni, comunque se lavori con dei model devi usare CHtml::activeQualcosa, che si traduce $form->qualcosa.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users