9. Module
Modules are useful in several scenarios. For a large-scale
application, we may divide it into several modules, each being
developed and maintained separately. Some commonly used
features, such as user management, comment management, may be
developed in terms of modules so that they can be reused easily
in future projects.
10. Module
A module is a self-contained software unit that consists of
models, views, controllers and other supporting components. In
many aspects, a module resembles to an application. The main
difference is that a module cannot be deployed alone and it must
reside inside of an application. Users can access the
controllers in a module like they do with normal application
controllers.
11. File Structure
forum/
ForumModule.php the module class file
components/ containing reusable user components
views/ containing view files for widgets
controllers/ containing controller class files
DefaultController.php the default controller class file
extensions/ containing third-party extensions
models/ containing model class files
views/ containing controller view and layout files
layouts/ containing layout view files
default/ containing view files for DefaultController
index.php the index view file
12. File Structure
forum/
ForumModule.php the module class file
components/ containing reusable user components
views/ containing view files for widgets
controllers/ containing controller class files
DefaultController.php the default controller class file
extensions/ containing third-party extensions
models/ containing model class files
views/ containing controller view and layout files
layouts/ containing layout view files
default/ containing view files for DefaultController
index.php the index view file
13. File Structure
forum/
ForumModule.php the module class file
components/ containing reusable user components
views/ containing view files for widgets
controllers/ containing controller class files
DefaultController.php the default controller class file
extensions/ containing third-party extensions
models/ containing model class files
views/ containing controller view and layout files
layouts/ containing layout view files
default/ containing view files for DefaultController
index.php the index view file
14. Generator in Gii
“use the module generator in Gii to create the basic
skeleton of a new module.”
19. Component
Yii applications are built upon components which are objects
written to a specification. A component is an instance of
CComponent or its derived class. Using a component mainly
involves accessing its properties and raising/handling its
events. The base class CComponent specifies how to define
properties and events.
21. Code
class Document extends CComponent{
private $_textWidth;
public function getTextWidth()
{
return $this->_textWidth;
}}
22. Usage
$document=new Document();
// we can write and read textWidth$document->textWidth=100;echo $document-
>textWidth;
// we can only read textHeightecho $document->textHeight;
// we can only write completed$document->completed=true;
23. Application Component
To use an application component, we first need to change the application configuration by adding a
new entry to its components property, like the following:
26. Extensions
Extending Yii is a common activity during development. For example, when you
write a new controller, you extend Yii by inheriting its CController class; when
you write a new widget, you are extending CWidget or an existing widget class. If
the extended code is designed to be reused by third-party developers, we call it
an extension.
27. Extensions
Using an extension usually involves the following three steps:
1. Download the extension from Yii's extension repository.
2. Unpack the extension under the extensions/xyz subdirectory of application
base directory, where xyz is the name of the extension.
3. Import, configure and use the extension.
Each extension has a name that uniquely identifies it among all extensions. Given
an extension named as xyz, we can always use the path alias ext.xyz to locate its
base directory which contains all files of xyz.
28. Zii Extensions
Before we start describing the usage of third-party extensions, we would like to introduce the Zii
extension library, which is a set of extensions developed by the Yii developer team and included in
every release.
When using a Zii extension, one must refer to the corresponding class using a path alias in the form
ofzii.path.to.ClassName. Here the root alias zii is predefined by Yii. It refers to the root directory
of the Zii library. For example, to use CGridView, we would use the following code in a view script
when referring to the extension:
30. Widget
Widgets are mainly used in views. Given a widget class XyzClass belonging to the xyz extension, we
can use it in a view as follows:
31. Usage
// widget that does not need body content
<?php $this->widget('ext.xyz.XyzClass', array(
'property1'=>'value1',
'property2'=>'value2')); ?>
32. Usage
// widget that can contain body content
<?php $this->beginWidget('ext.xyz.XyzClass', array(
'property1'=>'value1',
'property2'=>'value2')); ?>
...body content of the widget...
<?php $this->endWidget(); ?>