Visualizzare Le Sedi Di Una Certa Azienda

Ciao a tutti,

Scusate la semplicità della domanda. Ma vorrei avere qualche tips per risolvere la questione.

Ho creato due modelli, studio e sede. Ho fatto il crud del controller sede e nella form ho messo anche i

dati della sede primaria e tutto pare andare. Ora vorrei dare l’opportunita’ di gestire le sedi ( aggiornamento,delete,etc ) per ogni studio. La prima cosa che ho pensato e’ stata quella di creare il CRUD per il modello sede. Ma ora come faccio a vincolare le richieste del modello sede a secondo dello studio che voglio modificare? Provo a spiegarmi meglio

Vado nella pagine update studio, nella sidebox aggiungo gestisci sedi. La mia prima idea era quella di portare l’utente su sedi/admin ma ovviamente lui mi mostra tutte le sedi. Non mi visualizza solo le sedi dello studio X. Posso passargli dei params sul’url. Oppure la strada e’ sbagliata?

Grazie mille.

Stefano

Al DataGrid non devi passare tutti i dati ma solo quelli di una data azienda, quindi devi mettere mano al metodo search e fare si che non restituisca tutto. Come vedrai all’interno di questo metodo, il metodo search compone una query, puoi provare a modificare quella query.

Grazie… ho risolto agilmente :D

Ciao,

Stefano

Ok, però adesso potresti dirci come hai risolto cos da poter essere di aiuto a chi dovesse capitare di qui =).

Pardon :D

Sono un novellino di Yii, quindi la soluzione anche se funzionante potrà sicuramente essere migliorata.

Nel modello sede ho creato un nuovo metodo per la ricerca, chiamandolo searchBy che accetta due parametri il tipo di azienda e l’id della stessa, inoltre ho aggiunto le condizioni necessarie in criteria per fare la query richiesta


public function searchBy($id,$type)

        {

                

                $criteria=new CDbCriteria;


                $criteria->compare('id',$this->id);

                $criteria->addCondition('t.idstudio = :id');

                $criteria->addCondition('t.type = "'.$type.'"');

                $criteria->params = array(':id' => $id);

Nella sidebox nella view dell’azienda ho creato un link che richiama appunto sede/admin cosi’ composto:


array('label'=>'Gestione Sedi', 'url'=>array('/sede/admin&idstudio='.$model->id.'&type=S')),

come ultimo step, nella vista/admin nella sezione riguardante il CGridView ho sostituito il metodo da richiamare in ‘dataProvider’ , da $model->search a $model->searchBy

$this->widget(‘zii.widgets.grid.CGridView’, array(

                    'id'=>'sede-grid',


                    'dataProvider'=>$model->searchBy($_GET['idstudio'],$_GET['type']),

Spero di essermi fatto capire :D

Ciao,

Stefano

è possibile che tu abbia scritto del codice in più

se ho capito bene la tua esigenza era quella di visualizzare, dato uno studio, le sedi.

prima cosa se gii non te l’ha già fatto, impostare la relation in Studio, HAS_MANY Sedi.

Poi magari nell’actionView di StudioController potevi fare una cosa del genere:




public function actionView($id)

	{

                $grid=new Sede('search');

		$grid->unsetAttributes();  // clear any default values

		if(isset($_GET['Sede']))

			$grid->attributes=$_GET['Sede'];


		$grid->studio_id = $id;


		$this->render('view',array(

			'model'=>$this->loadModel($id),

                        'grid'=>$grid,

		));

	}



e poi nella view mettevi la tua Gridview con dataProvider settato a $grid.