The Definitive Guide to Yii 1.1
Qiang Xue and Xiang Wei Zhuo
Copyright 2008-2010. All Rights Reserved.
Contents
Contents i
License xiii
1 Getting Started 1
1.1 The Definitive Guide to Yii . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 New Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2.1 Version 1.1.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2.2 Version 1.1.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2.3 Version 1.1.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.4 Version 1.1.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.5 Version 1.1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.6 Version 1.1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.7 Version 1.1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.8 Version 1.0.11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.9 Version 1.0.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.10 Version 1.0.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.11 Version 1.0.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.12 Version 1.0.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.13 Version 1.0.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Upgrading from Version 1.0 to 1.1 . . . . . . . . . . . . . . . . . . . . . . . 4
ii Contents
1.3.1 Changes Related with Model Scenarios . . . . . . . . . . . . . . . . . 4
1.3.2 Changes Related with Eager Loading for Relational Active Record . 5
1.3.3 Changes Related with Table Alias in Relational Active Record . . . 5
1.3.4 Changes Related with Tabular Input . . . . . . . . . . . . . . . . . . 5
1.3.5 Other Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 What is Yii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4.1 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4.2 What is Yii Best for? . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4.3 How is Yii Compared with Other Frameworks? . . . . . . . . . . . . 6
1.5 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5.1 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.6 Creating First Yii Application . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.6.1 Connecting to Database . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.6.2 Implementing CRUD Operations . . . . . . . . . . . . . . . . . . . . 13
2 Fundamentals 19
2.1 Model-View-Controller (MVC) . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.1 A Typical Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2 Entry Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2.1 Debug Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3 Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3.1 Application Configuration . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3.2 Application Base Directory . . . . . . . . . . . . . . . . . . . . . . . 23
2.3.3 Application Component . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3.4 Core Application Components . . . . . . . . . . . . . . . . . . . . . 24
Contents iii
2.3.5 Application Lifecycles . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4 Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.4.1 Route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.4.2 Controller Instantiation . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.4.3 Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.4.4 Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.5 Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.6 View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.6.1 Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.6.2 Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.6.3 System View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.7 Component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.7.1 Component Property . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.7.2 Component Event . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.7.3 Component Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.8 Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.8.1 Creating Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.8.2 Using Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.8.3 Nested Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.9 Path Alias and Namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.9.1 Root Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.9.2 Importing Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.9.3 Importing Directories . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.9.4 Namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43