bien entendu pour rendre ce lien exploitable il te faudra modifier l’action correspondante dans le controlleur de ton domaine afin de manipuler les enregistrements non plus à partir de ‘id’ (manière par défaut) mais à partir du champ ‘nom_region’…qui est unique aussi… hein!!
Un des moyens les plus simple est de modifier la funtion LoadModel($id) dans le controlleur du modèle region
public function loadModel($id)
{
//$model=Region::model()->findByPk($id);//ancien code
$model = Region::model()->findByAttributes(array('nom_region'=>$id));//nouveau code
if($model===null)
throw new CHttpException(404,'The requested page does not exist.');
return $model;
}
}
J’ai aussi modifié RegionController.loadModel($id).
/**
* Returns the data model based on the primary key given in the GET variable.
* If the data model is not found, an HTTP exception will be raised.
* @param integer $id the ID of the model to be loaded
* @return Region the loaded model
* @throws CHttpException
*/
public function loadModel($id)
{
$model=Region::model()->findByAttributes(array('region_name'=>$id));
if($model===null)
throw new CHttpException(404,'The requested page does not exist.');
return $model;
}
Mais maintenant une erreur “Error 404 Le système ne peut trouver l’action « region_test » demandée.” s’affiche sur la page localhost/gestiondesmateriels/index.php/region/region_test
finalement modifier le coeur du controlleur c’est pas toujours bon lol car du coup toutes les fonctions de ton modèle ‘region’ sont affectées par la modification…
bon je te propose de faire plus simple et de revenir à la function originale ‘loadModel’ puis d’en créer une autre disons ‘loadModelRegion’ afin de faire plus simple…
Donc tu effaces tes dernières modifications et tu crées plutôt une nouvelle fonction ‘loadModelname’ qui ressemble à ça et qui sera chargée de remplir le model avec tous les champs de la région sélectionnée.
public function loadModelname($name)
{
$model = Region::model()->findByAttributes(array('region_name'=>$name));
if($model===null)
throw new CHttpException(404,'The requested page does not exist.');
return $model;
}
tu crées ensuite dans ton controlleur ‘Regioncontrolleur’ une action ‘viewregionname’ qui ressemble à ça et qui permet d’afficher la region sélectionnée…
public function actionViewregionname($name)
{
$this->render('_view',array(
'model'=>$this->loadModelname($name),
));
}
étant entendu que la vue _view t’affiche seulement la region choisie…