Yii Framework Forum: filtro poco elegante - Yii Framework Forum

Jump to content

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

filtro poco elegante Rate Topic: -----

#1 User is offline   ilovephp 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 128
  • Joined: 04-February 11
  • Location:treviso

Posted 31 March 2011 - 02:35 AM

:)

cerco di spiegare il codice.
ho due select la seconda dipende dalla prima.

	<div class="row">
		<?php echo $form->labelEx($model,'id_responsabili'); ?>
		<?php 	echo $form->dropDownList($model, 'id_responsabili', $idR, 
						 array(
					 	'empty' => 'Lista Responsabili',
                        			'OnChange'=>'this.form.submit()',
		 				)
                                               );
			                       ?>
		<?php echo $form->error($model,'id_responsabili');?>
		<?php # echo $form->textField($model,'id_responsabili'); ?>
	</div>

	<div class="row">
		<?php echo $form->labelEx($model,'ufficio'); ?>
		<?php 	echo $form->dropDownList($model, 'id_ufficio', 
                $listauffici,array('empty' => 'Lista Uffici')); ?>
		<?php echo $form->error($model,'id_ufficio'); ?>
	</div>


la seconda select dipente dalla prima, e per recuperare il valore della prima select faccio un submit del form dopo la sua modifica, dopo di chè lo recupero con:
if(isset($model->attributes["id_responsabili"]))


in questo modo ho il valore che mi serve per fare gli opportuni filtri.

:lol: e fin qui funziona tutto perfettamente, ma la soluzione mi sembra poco elegante.


è attivo jquery :
$form=$this->beginWidget('CActiveForm', array(
	'id'=>'incaricati-form',
	'enableAjaxValidation'=>true,
)); ?>

potrei recuperare il valore della prima select senza fare il SUBMIT? è un po' antipatico il fatto
che invia i dati.


grazie mille
:lol:
la non conoscenza è una brutta bestia
0

#2 User is offline   sensorario 

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

Posted 31 March 2011 - 05:21 AM

Io ho trovato questo link sulle dropdownList dipendenti.

Da quello che leggo:
echo CHtml::dropDownList('country_id','', array(1=>'USA',2=>'France',3=>'Japan'),
array(
'ajax' => array(
'type'=>'POST', //request type
'url'=>CController::createUrl('currentController/dynamiccities'), //url to call.
//Style: CController::createUrl('currentController/methodToCall')
'update'=>'#city_id', //selector to update
//'data'=>'js:javascript statement' 
//leave out the data key to pass all form values through
))); 
 
//empty since it will be filled by the other dropdown
echo CHtml::dropDownList('city_id','', array());


Ed in particolare qui:
array(
'ajax' => array(
'type'=>'POST', //request type
'url'=>CController::createUrl('currentController/dynamiccities'), //url to call.
'update'=>'#city_id',
)


è possibile aggiornare automaticamente e con codice pulito Yii una dropdownList. Dovendo richiamare il metodo currentController/dynamiccities, dovremo aggiungere il metodo al nostro controller:
public function actionDynamiccities()
{
    $data=Location::model()->findAll('parent_id=:parent_id', 
                  array(':parent_id'=>(int) $_POST['country_id']));
 
    $data=CHtml::listData($data,'id','name');
    foreach($data as $value=>$name)
    {
        echo CHtml::tag('option',
                   array('value'=>$value),CHtml::encode($name),true);
    }
}


ma sopratutto aggiungere anche il permesso nelle accessRules. Tra le altre cose, ti ringrazio per la domanda =). Non mi ero mai spinto a tanto e so che mi servirà presto!
0

#3 User is offline   ilovephp 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 128
  • Joined: 04-February 11
  • Location:treviso

Posted 31 March 2011 - 06:29 AM

grazie mille. è bello collaborare insieme.

guardavo proprio quello che mi hai indicato. ti farò sapere.

ma nonostante tutto sono contento di essere arrivato ad una soluzione.

sai cosa mi è stato d'aiuto?

vedere il sorgente finale di yii?

;D
la non conoscenza è una brutta bestia
0

#4 User is offline   ilovephp 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 128
  • Joined: 04-February 11
  • Location:treviso

Posted 31 March 2011 - 07:49 AM

ho omesso di dire che il risultato della select doveva essere salvata nel DB.

comunque...provo ma il mio codice non va

echo CHtml::dropDownList('id_responsabili','', $idR,
array(
'ajax' => array(
'type'=>'POST', //request type
'url'=>CController::createUrl('incaricati/controlloresp'), //url to call.
//Style: CController::createUrl('currentController/methodToCall')
'update'=>'#id_ufficio', //selector to update
//'data'=>'js:javascript statement' 
//leave out the data key to pass all form values through
))); 
 
//empty since it will be filled by the other dropdown
echo CHtml::dropDownList('id_ufficio','', array());
?>	



penso che nel controller non arrivi proprio.

il mio controller incaricati è:
	public function actionControlloresp()
	{
		echo $_POST['id_ufficio'];
		echo "sono in controller"; 
   $data=Uffici::model()->findAll('parent_id=:parent_id', 
                  array(':parent_id'=>(int) $_POST['id_ufficio']));
 
    $data=CHtml::listData($data,'id_ufficio','ufficio');
    foreach($data as $value=>$name)
    {
        echo CHtml::tag('option',
                   array('value'=>$value),CHtml::encode($name),true);
    }
		
	}


il mio jQuery è:
<script type="text/javascript">
/*<![CDATA[*/
jQuery(function($) {
jQuery('body').delegate('#id_responsabili','change',function(){jQuery.ajax({'type':'POST','url':'/gestionePrivacy/index.php?r=incaricati/controlloresp','cache':false,'data':jQuery(this).parents("form").serialize(),'success':function(html){jQuery("#id_ufficio").html(html)}});return false;});
$('#incaricati-form').yiiactiveform({'attributes':[{'inputID':'Incaricati_grado','errorID':'Incaricati_grado_em_','model':'Incaricati','name':'grado'},{'inputID':'Incaricati_nome','errorID':'Incaricati_nome_em_','model':'Incaricati','name':'nome'},{'inputID':'Incaricati_cognome','errorID':'Incaricati_cognome_em_','model':'Incaricati','name':'cognome'},{'inputID':'Incaricati_id_responsabili','errorID':'Incaricati_id_responsabili_em_','model':'Incaricati','name':'id_responsabili'},{'inputID':'Incaricati_id_ufficio','errorID':'Incaricati_id_ufficio_em_','model':'Incaricati','name':'id_ufficio'},{'inputID':'Incaricati_id_tipodatitrattati','errorID':'Incaricati_id_tipodatitrattati_em_','model':'Incaricati','name':'id_tipodatitrattati'},{'inputID':'Incaricati_id_incarichi','errorID':'Incaricati_id_incarichi_em_','model':'Incaricati','name':'id_incarichi'}],'summaryID':'incaricati-form_es_'});
});
/*]]>*/
</script>


la non conoscenza è una brutta bestia
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