Remarque : Les modules sont pris en charge à partir de la version 1.0.3.
Un module est une unité logicielle indépendante qui contient des modèles, des vues, des contrôleurs et d'autres composants de support. À bien des égards, un module ressemble à une application. La principale différence est qu'un module ne peut pas être déployé individuellement, il doit exister au sein d'une application. Les utilisateurs peuvent accéder aux contrôleurs dans un module comme ils le feraient dans une application normale. Le module
est utile dans certains scénarios. Pour les applications volumineuses, nous devrons peut-être le diviser en plusieurs modules, et chaque module peut être maintenu et déployé indépendamment. Certaines fonctions courantes, comme la gestion des utilisateurs et la gestion des commentaires, peuvent être développées sous forme de modules afin de pouvoir être facilement réutilisées dans de futurs projets.
Les modules sont organisés dans un répertoire, et le nom du répertoire est l'identifiant unique du module. La structure du répertoire du module est très similaire à celle du répertoire de base de l'application. Ce qui suit répertorie la structure de répertoires typique d'un module fourm
:
forum/ ForumModule.php 模块类文件 components/ 包含可复用的用户组件 views/ 包含小物件的视图文件 controllers/ 包含控制器类文件 DefaultController.php 默认的控制器类文件 extensions/ 包含第三方扩展 models/ 包含模块类文件 views/ 包含控制器视图和布局文件 layouts/ 包含布局文件 default/ 包含 DefaultController 的视图文件 index.php 首页视图文件
le module doit avoir une classe de module héritée de CWebModule. Le nom de la classe est déterminé par l'expression ucfirst($id).'Module'
, où $id
représente l'ID du module (ou le nom du répertoire du module). Les classes de modules sont l'endroit central pour stocker les informations qui peuvent être partagées entre le code du module. Par exemple, nous pouvons utiliser CWebModule::params pour stocker les paramètres du module et utiliser CWebModule::components pour partager des composants d'application au niveau du module.
Astuce : Nous pouvons utiliser des modules dans Gii pour créer Le squelette de base d'un nouveau module créé par l'outil.
Pour utiliser des modules, placez d'abord le répertoire du module dans modules
du répertoire de base de l'application. Déclarez ensuite l'ID du module dans l'attribut modules de votre application. Par exemple, pour utiliser le module forum
ci-dessus, nous pouvons utiliser la configuration d'application suivante :
return array( ...... 'modules'=>array('forum',...), ...... );
Les modules peuvent également être configurés avec des valeurs de propriété initiales. L'approche est très similaire à la configuration des composants d'application. Par exemple, un module forum
peut avoir une propriété nommée postPerPage
dans sa classe de module, qui peut être configurée dans la configuration de l'application comme suit :
return array( ...... 'modules'=>array( 'forum'=>array( 'postPerPage'=>20, ), ), ...... );
ci-dessus, on peut utiliser l'expression suivante : postPerPage
$postPerPage=Yii::app()->controller->module->postPerPage; // or the following if $this refers to the controller instance // $postPerPage=$this->module->postPerPage;
. Par exemple, en supposant que le module moduleID/controllerID/actionID
ci-dessus ait un contrôleur nommé forum
, nous pouvons accéder à l'action PostController
dans ce contrôleur via le routage forum/post/create
. L'URL correspondant à cette route est create
.http://www.php.cn/
3. Modules imbriqués Les modules peuvent être imbriqués à l'infini. Cela signifie qu'un module peut contenir un autre module, et cet autre module peut contenir d'autres modules. Nous appelons le premierAstuce : Si un contrôleur se trouve dans un sous-répertoire du répertoire , on peut toujours utiliser le routage ci-dessus format. Par exemple, en supposant que
controllers
est à l'intérieur dePostController
, nous pouvons accéder à l'actionforum/controllers/admin
viaforum/admin/post/create
.create
module parent et le second sous-module. Les sous-modules doivent être définis dans l'attribut modules de leur module parent, tout comme nous avons défini le module dans la configuration de l'application plus tôt.
Pour accéder aux actions du contrôleur dans les modules enfants, nous devons utiliser la route parentModuleID/childModuleID/controllerID/actionID. Ce qui précède est la série de guides officiels de Yii Framework 11 - Connaissances de base : contenu du module Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !