SlideShare a Scribd company logo
Y I I 
IN ACTION 
KEANY CHU 
http://keanychu.com
KeaNy Chu 
fb.com/keanyc 
@keany_chu
Yii in action
Yii in action
Yii in action
Yii in action
let’s talk about... 
● Module 
● Component 
● Extension
<?php echo “Module” ?>
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.
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.
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
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
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
Generator in Gii 
“use the module generator in Gii to create the basic 
skeleton of a new module.”
Config 
// config/main.php 
return array( 
...... 
'modules'=>array('forum',...), 
......);
Config 
// config/main.php 
return array( 
...... 
'modules'=>array( 
'forum'=>array( 
'postPerPage'=>20, 
), 
), 
......);
Usage 
postPerPage=Yii::app()->controller->module->postPerPage;// or the following if 
$this refers to the controller instance// $postPerPage=$this->module- 
>postPerPage;
<?php echo “Component” ?>
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.
Code 
class Document extends CComponent{ 
public $textWidth;}
Code 
class Document extends CComponent{ 
private $_textWidth; 
public function getTextWidth() 
{ 
return $this->_textWidth; 
}}
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;
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:
Application Component 
return array( 
// 'preload'=>array('xyz',...), 
'components'=>array( 
'xyz'=>array( 
'class'=>'ext.xyz.XyzClass', 
'property1'=>'value1', 
'property2'=>'value2', 
), 
// other component configurations 
),);
<?php echo “Extensions” ?>
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.
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.
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:
Zii Extensions 
$this->widget('zii.widgets.grid.CGridView', array( 
'dataProvider'=>$dataProvider,));
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:
Usage 
// widget that does not need body content 
<?php $this->widget('ext.xyz.XyzClass', array( 
'property1'=>'value1', 
'property2'=>'value2')); ?>
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(); ?>
Yii in action
DO NOT 
REINVENT 
THE WHEEL
Q&A
KeaNy Chu 
http://keanychu.com 
keanyc@gmail.com

More Related Content

PDF
13th Sep, Drupal 7 advanced training by TCS
DrupalMumbai
 
PDF
Migrating to-Drupal-8 by Bryan Manalo
Promet Source
 
PDF
Migrating Drupal 7 to Drupal 8
Promet Source
 
PDF
04 programmation mobile - android - (db, receivers, services...)
TECOS
 
PDF
03 programmation mobile - android - (stockage, multithreads, web services)
TECOS
 
ODP
Android App Development - 04 Views and layouts
Diego Grancini
 
PDF
Android Data Persistence
Jussi Pohjolainen
 
PPTX
Magento 2 UI Components Overview
eGlobe IT Solutions
 
13th Sep, Drupal 7 advanced training by TCS
DrupalMumbai
 
Migrating to-Drupal-8 by Bryan Manalo
Promet Source
 
Migrating Drupal 7 to Drupal 8
Promet Source
 
04 programmation mobile - android - (db, receivers, services...)
TECOS
 
03 programmation mobile - android - (stockage, multithreads, web services)
TECOS
 
Android App Development - 04 Views and layouts
Diego Grancini
 
Android Data Persistence
Jussi Pohjolainen
 
Magento 2 UI Components Overview
eGlobe IT Solutions
 

Similar to Yii in action (20)

PPS
Actionview
Amal Subhash
 
PDF
Advance RCP
Rahul Shukla
 
PPT
CICON2010: Adam Griffiths - CodeIgniter 2
CodeIgniter Conference
 
PDF
Adding custom ui controls to your application (1)
Oro Inc.
 
PPTX
Tips On Trick Odoo Add-On.pptx
Agusto Sipahutar
 
PPTX
How to make a component and add it to systray in Odoo
Celine George
 
PPTX
Introduction And Basics of Modules in Drupal 7
Dhinakaran Mani
 
PDF
Appcelerator Titanium Alloy + Kinvey Collection Databinding - Part One
Aaron Saunders
 
PPT
Introduction to Zend Framework
Jamie Hurst
 
PPTX
My Very First Zf App Part One
isaaczfoster
 
PPTX
Odoo 15 Composition of Module
Celine George
 
PPTX
Simple module Development in Joomla! 2.5
Vishwash Gaur
 
PDF
Using Drupal Features in B-Translator
Dashamir Hoxha
 
PDF
Write your first WordPress plugin
Anthony Montalbano
 
PDF
Whmcs addon module docs
quyvn
 
PPTX
Unit 2 - Data Binding.pptx
Malla Reddy University
 
PPT
Zend Framework 2
Tarun Kumar Singhal
 
PPTX
Mvc in symfony
Sayed Ahmed
 
PPTX
Tips On Trick Odoo Add-On.pptx
Agusto Sipahutar
 
PDF
How to Implement Micro Frontend Architecture using Angular Framework
RapidValue
 
Actionview
Amal Subhash
 
Advance RCP
Rahul Shukla
 
CICON2010: Adam Griffiths - CodeIgniter 2
CodeIgniter Conference
 
Adding custom ui controls to your application (1)
Oro Inc.
 
Tips On Trick Odoo Add-On.pptx
Agusto Sipahutar
 
How to make a component and add it to systray in Odoo
Celine George
 
Introduction And Basics of Modules in Drupal 7
Dhinakaran Mani
 
Appcelerator Titanium Alloy + Kinvey Collection Databinding - Part One
Aaron Saunders
 
Introduction to Zend Framework
Jamie Hurst
 
My Very First Zf App Part One
isaaczfoster
 
Odoo 15 Composition of Module
Celine George
 
Simple module Development in Joomla! 2.5
Vishwash Gaur
 
Using Drupal Features in B-Translator
Dashamir Hoxha
 
Write your first WordPress plugin
Anthony Montalbano
 
Whmcs addon module docs
quyvn
 
Unit 2 - Data Binding.pptx
Malla Reddy University
 
Zend Framework 2
Tarun Kumar Singhal
 
Mvc in symfony
Sayed Ahmed
 
Tips On Trick Odoo Add-On.pptx
Agusto Sipahutar
 
How to Implement Micro Frontend Architecture using Angular Framework
RapidValue
 
Ad

Recently uploaded (20)

PPT
1. SYSTEMS, ROLES, AND DEVELOPMENT METHODOLOGIES.ppt
zilow058
 
PDF
Cryptography and Information :Security Fundamentals
Dr. Madhuri Jawale
 
PPTX
IoT_Smart_Agriculture_Presentations.pptx
poojakumari696707
 
PPTX
22PCOAM21 Session 1 Data Management.pptx
Guru Nanak Technical Institutions
 
PPTX
database slide on modern techniques for optimizing database queries.pptx
aky52024
 
PDF
Unit I Part II.pdf : Security Fundamentals
Dr. Madhuri Jawale
 
PDF
LEAP-1B presedntation xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
hatem173148
 
PDF
Construction of a Thermal Vacuum Chamber for Environment Test of Triple CubeS...
2208441
 
PDF
FLEX-LNG-Company-Presentation-Nov-2017.pdf
jbloggzs
 
PPTX
MSME 4.0 Template idea hackathon pdf to understand
alaudeenaarish
 
PDF
Packaging Tips for Stainless Steel Tubes and Pipes
heavymetalsandtubes
 
PDF
settlement FOR FOUNDATION ENGINEERS.pdf
Endalkazene
 
PPT
Understanding the Key Components and Parts of a Drone System.ppt
Siva Reddy
 
PDF
Zero Carbon Building Performance standard
BassemOsman1
 
PPTX
Tunnel Ventilation System in Kanpur Metro
220105053
 
PPTX
Civil Engineering Practices_BY Sh.JP Mishra 23.09.pptx
bineetmishra1990
 
PPTX
Inventory management chapter in automation and robotics.
atisht0104
 
PDF
2025 Laurence Sigler - Advancing Decision Support. Content Management Ecommer...
Francisco Javier Mora Serrano
 
PDF
STUDY OF NOVEL CHANNEL MATERIALS USING III-V COMPOUNDS WITH VARIOUS GATE DIEL...
ijoejnl
 
PDF
Biodegradable Plastics: Innovations and Market Potential (www.kiu.ac.ug)
publication11
 
1. SYSTEMS, ROLES, AND DEVELOPMENT METHODOLOGIES.ppt
zilow058
 
Cryptography and Information :Security Fundamentals
Dr. Madhuri Jawale
 
IoT_Smart_Agriculture_Presentations.pptx
poojakumari696707
 
22PCOAM21 Session 1 Data Management.pptx
Guru Nanak Technical Institutions
 
database slide on modern techniques for optimizing database queries.pptx
aky52024
 
Unit I Part II.pdf : Security Fundamentals
Dr. Madhuri Jawale
 
LEAP-1B presedntation xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
hatem173148
 
Construction of a Thermal Vacuum Chamber for Environment Test of Triple CubeS...
2208441
 
FLEX-LNG-Company-Presentation-Nov-2017.pdf
jbloggzs
 
MSME 4.0 Template idea hackathon pdf to understand
alaudeenaarish
 
Packaging Tips for Stainless Steel Tubes and Pipes
heavymetalsandtubes
 
settlement FOR FOUNDATION ENGINEERS.pdf
Endalkazene
 
Understanding the Key Components and Parts of a Drone System.ppt
Siva Reddy
 
Zero Carbon Building Performance standard
BassemOsman1
 
Tunnel Ventilation System in Kanpur Metro
220105053
 
Civil Engineering Practices_BY Sh.JP Mishra 23.09.pptx
bineetmishra1990
 
Inventory management chapter in automation and robotics.
atisht0104
 
2025 Laurence Sigler - Advancing Decision Support. Content Management Ecommer...
Francisco Javier Mora Serrano
 
STUDY OF NOVEL CHANNEL MATERIALS USING III-V COMPOUNDS WITH VARIOUS GATE DIEL...
ijoejnl
 
Biodegradable Plastics: Innovations and Market Potential (www.kiu.ac.ug)
publication11
 
Ad

Yii in action

  • 1. Y I I IN ACTION KEANY CHU http://keanychu.com
  • 7. let’s talk about... ● Module ● Component ● Extension
  • 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.”
  • 15. Config // config/main.php return array( ...... 'modules'=>array('forum',...), ......);
  • 16. Config // config/main.php return array( ...... 'modules'=>array( 'forum'=>array( 'postPerPage'=>20, ), ), ......);
  • 17. Usage postPerPage=Yii::app()->controller->module->postPerPage;// or the following if $this refers to the controller instance// $postPerPage=$this->module- >postPerPage;
  • 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.
  • 20. Code class Document extends CComponent{ public $textWidth;}
  • 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:
  • 24. Application Component return array( // 'preload'=>array('xyz',...), 'components'=>array( 'xyz'=>array( 'class'=>'ext.xyz.XyzClass', 'property1'=>'value1', 'property2'=>'value2', ), // other component configurations ),);
  • 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:
  • 29. Zii Extensions $this->widget('zii.widgets.grid.CGridView', array( 'dataProvider'=>$dataProvider,));
  • 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(); ?>
  • 34. DO NOT REINVENT THE WHEEL
  • 35. Q&A