Yii Framework Forum: Dependent Dropdown - Yii Framework Forum

Jump to content

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

Dependent Dropdown recuperare il valore della selezione del secondo dropdown Rate Topic: ***-- 1 Votes

#1 User is offline   X-Men 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 29-July 13

Posted 13 October 2013 - 09:42 AM

Ciao a tutti,

avrei bisogno di un aiuto.
Ho creato 2 dropdown menu dipendenti che rappresentano il primo la "marca" il secondo il "modello" relativo alla marca selezionata.
ho seguito il wiki http://www.yiiframework.com/wiki/24/ dal titolo "Creating a dependent dropdown".
il primo menù "marca" preleva i dati dalla tabella "marca" mentre il menù "modello" preleva i dati dalla tabella "modello". le due tabelle sono in relazione 1-N attraverso la chiave id_marca nella tabella modello

marca
id|desc

modello
id|id_marca|desc

desc è il campo che indica il nome della marca o del modello

L'implementazione dell'esempio funziona correttamente, ma la mia esigenza è anche quella di recuperare i valori selezionati dei due dropdown menu' essendo essi inseriti all'interno di un form.
Perciò ho inserito nella variabile $marca i dati della tabella marca e poi passati al $form->dropDownList......
mentre con il dropdown dipendente "modello" non sò come fare.

come posso fare per cambiare:
echo CHtml::dropDownList('desc','modello', array(), array('prompt'=>'Seleziona Modello'));
i modo da poter recuperare la selezione con $form->dropDownList($model,........)

Sotto il codice
Grazie




La view:
$marca = CHtml::listData(Marca::model()->findAll(array('order' => 'id')), 'id', 'desc');

echo $form->dropDownList($model,'marca', $marca,
array(
'prompt'=>'Seleziona Marca',
'ajax' => array(
'type'=>'POST',
'url'=>CController::createUrl('LoadModello'),
'update'=>'#desc',
'data'=>array('id_marca'=>'js:this.value'),
)));


echo $form->labelEx($model,'modello');
echo CHtml::dropDownList('desc','modello', array(), array('prompt'=>'Seleziona Modello'));



Il Controller

public function actionLoadModello()
{
$data=Modello::model()->findAll('id_marca=:id_marca', array(':id_marca'=>(int) $_POST['id_marca']));
$data=CHtml::listData($data,'id','desc');

foreach($data as $value=>$desc)
{
echo CHtml::tag('option', array('value'=>$value),CHtml::encode($desc),true);
}
}//
X-Man
0

#2 User is offline   st4nny 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 336
  • Joined: 10-April 12

Posted 13 October 2013 - 04:07 PM

il secondo dropdown devi legarlo al model come per gli altri campi.

non così
echo $form->labelEx($model,'modello');
echo CHtml::dropDownList('desc','modello', array(), array('prompt'=>'Seleziona Modello'));


ma così:
echo $form->labelEx($model,'modello');
echo CHtml::dropDownList($model,'modello', array(), array('prompt'=>'Seleziona Modello'));

0

#3 User is offline   X-Men 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 29-July 13

Posted 14 October 2013 - 01:29 AM

Ho già provato nel modo consigliato da te ma se non gli passo come primo argomento del secondo dropdown il campo "desc" (dropDownList('desc','modello', array(), array('prompt'=>'Seleziona Modello'));) non mi riempie la lista di selezione dei modelli
X-Man
0

#4 User is offline   zaccaria 

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

Posted 14 October 2013 - 03:11 AM

Probabilmente cambiano gli id delle ddl e devi modificare il js di conseguenza
0

#5 User is offline   X-Men 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 29-July 13

Posted 14 October 2013 - 05:29 AM

View Postzaccaria, on 14 October 2013 - 03:11 AM, said:

Probabilmente cambiano gli id delle ddl e devi modificare il js di conseguenza



Come devo fare e dove lo trovo il codice js ?
X-Man
0

#6 User is offline   st4nny 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 336
  • Joined: 10-April 12

Posted 14 October 2013 - 06:03 AM

correggi questo:

echo $form->dropDownList($model,'marca', $marca,
array(
'prompt'=>'Seleziona Marca',
'ajax' => array(
'type'=>'POST', 
'url'=>CController::createUrl('LoadModello'),
'update'=>'#desc',  <-- Questo qui è il tuo problema
'data'=>array('id_marca'=>'js:this.value'),
)));


o aggiungi alla tua seconda dropdown:
echo CHtml::dropDownList($model,'modello', array(), array('prompt'=>'Seleziona Modello','id'=>'desc'));


oppure cambi
'update'=>'#Model_modello'

0

#7 User is offline   X-Men 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 9
  • Joined: 29-July 13

Posted 14 October 2013 - 03:40 PM

View Postst4nny, on 14 October 2013 - 06:03 AM, said:

correggi questo:

echo $form->dropDownList($model,'marca', $marca,
array(
'prompt'=>'Seleziona Marca',
'ajax' => array(
'type'=>'POST', 
'url'=>CController::createUrl('LoadModello'),
'update'=>'#desc',  <-- Questo qui è il tuo problema
'data'=>array('id_marca'=>'js:this.value'),
)));


o aggiungi alla tua seconda dropdown:
echo CHtml::dropDownList($model,'modello', array(), array('prompt'=>'Seleziona Modello','id'=>'desc'));


oppure cambi
'update'=>'#Model_modello'



Ora funziona correttamente. Grazie per l'aiuto. Molto gentili
X-Man
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