Certaines personnes choisiront de créer plusieurs mises en page et de changer de mise en page à différents endroits, mais cela ne maximise pas la réutilisabilité du code et n'est pas assez flexible. Il existe un mécanisme très pratique dans Yii pour résoudre ce problème, à savoir un widget, qui est un widget. (Apprentissage recommandé : framework yii)
yii a des widgets intégrés, qui sont placés sous web.widgets et zii.widgets, tels que notre CLinkPager couramment utilisé, vous pouvez jeter un oeil à CMenu.
Pour étendre le widget vous-même, selon l'introduction du manuel, vous devez hériter de CWidget et remplacer la méthode run(). Commençons par étendre le premier widget :
Créez le répertoire de stockage des widgets : créez le répertoire widgets sous application (la valeur par défaut est protégée) pour stocker les classes de widgets, puis créez le répertoire widgets.views pour stocker la vue. fichier du widget.
Créez la classe de widget : créez un fichier nommé TestWidget.php sous application.widgets. Le nom n'est pas trop particulier, assurez-vous de l'unicité, voyez simplement le nom et comprenez la signification. Ajoutez le code suivant à l'intérieur :
class TestWidget extends CWidget { public $datetime = ''; public function run() { $datetime = empty($this->datetime) ? date('Y-m-d H:i:s') : $this->datetime; $this->render('test', array('datetime'=>$datetime)); } }
Expliquez ce code : selon les règles, le nom de la classe TestWidget est le même que le nom du fichier TestWidget.php. La classe TestWidget doit hériter de CWidget puis réécrire le run(. ) méthode. Cette méthode sera appelée lorsque le widget sera rendu.
Appelez la méthode $this->render() dans la méthode run() pour restituer la vue de test et transmettez la variable $datetime à la vue (voir le rendu de la vue du contrôleur). Vous pouvez interroger la base de données, effectuer diverses opérations et transmettre les résultats des opérations dans la vue.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!