forked from yiisoft/yii
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathquickstart.first-app.txt
204 lines (150 loc) · 13.2 KB
/
quickstart.first-app.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
יצירת אפליקצית Yii ראשונה
==============================
בכדי לקבל ניסיון התחלתי עם Yii, אנו מתארים בחלק זה כיצד ליצור את האפליקציה הראשונה שלנו ב Yii. אנו נשתמש בכלי `yiic` המאפשר יצירה אוטומטית של קוד בעבור משימות מסויימות. לנוחות, אנו מניחים ש `YiiRoot` הינה התיקיה בה Yii מותקן, ו `WebRoot` הינה התיקיה הראשית של שרת הווב שלנו.
יש להריץ את `yiic` בשורת הפקודות בצורה הבאה:
~~~
% YiiRoot/framework/yiic webapp WebRoot/testdrive
~~~
» Note|הערה: בעת הרצת `yiic` על גבי מחשבים Mac OS, Linux או Unix, יהיה צורך בשינוי הרשאות של קובץ ה `yiic` בכדי שיהיה ניתן להריץ אותו. לחלופין, ניתן להריץ את הכלי בצורה הבאה,
» ~~~
» % cd WebRoot/testdrive
» % php YiiRoot/framework/yiic.php webapp WebRoot/testdrive
» ~~~
זה יצור שלד לאפליקצית Yii תחת התיקיה `WebRoot/testdrive`. לאפליקציה יש מבנה של תקיות שנחוץ למרבית אפליקציות ה Yii.
ללא צורך בכתיבת שורת קוד אחת, אנו יכולים לנסות את האפליקציה שיצרנו כרגע על ידי כניסה לקישור הבא בדפדפן:
~~~
http://hostname/testdrive/index.php
~~~
כפי שניתן לראות, לאפליקציה יש ארבע עמודים: עמוד הבית, עמוד האודות, עמוד ההתחברות ועמוד היצירת קשר. עמוד יצירת הקשר מציג טופס יצירת קשר שמשתמש יכול להזין ולשלוח למנהל האתר, ועמוד ההתחברות מאפשר למשתמש לאמת את עצמו לפני שהוא ניגש לתוכן שהוא מוגבל לבעלי גישה בלבד.





הדיאגרמה הבאה מציגה את מבנה התיקיות של האפליקציה שלנו.
אנא קרא אודות [מוסכמות](/doc/guide/basics.convention#directory) בכדי לקבל הסבר מדוייק למבנה זה.
~~~
testdrive/
index.php קובץ הכניסה הראשי של האפליקציה
index-test.php קובץ הכניסה הראשי למטרת בדיקות
assets/ מכיל קבצי נכסים הנגישים למשתמשים
css/ מכיל קבצי css
images/ מכיל תמונות
themes/ מכיל תבניות עיצוב לאפליקציה
protected/ מכיל קבצים מוגנים של האפליקציה
yiic קובץ פקודות עבור לינוקס ויוניקס
yiic.bat קובץ פקודות עבור וינדווס
yiic.php קובץ פקודות PHP
commands/ מכיל פקודות 'yiic' מותאמים אישית
shell/ מכיל פקודות 'yiic shell' מותאמים אישית
components/ מכיל רכיבים אשר משתמשים בהם שוב ושוב
Controller.php מחלקת הבסיס לכל הקונטרולרים
Identity.php מחלקת הזיהוי של משתמשים
config/ מכיל קבצי הגדרות
console.php קובץ הגדרות לאפליקציה דרך מסוף
main.php קובץ הגדרות לאפליקצית ווב
test.php קובץ הגדרות לבדיקות פונקצנליות
controllers/ מכיל קבצי מחלקות קונטרולר
SiteController.php קונטרולר ברירת המחדל
data/ מכיל את מסדי הנתונים לדוגמא
schema.mysql.sql תרשים מסד הנתונים של MySQL
schema.sqlite.sql תרשים מסד נתונים של SQLite
testdrive.db קובץ מסד הנתונים לדוגמא של SQLite
extensions/ מכיל הרחבות צד שלישי
messages/ מכיל קבצי תרגום
models/ מכיל קבצי מחלקות המודל
LoginForm.php מודל הטופס לפעולה של התחברות
ContactForm.php מודל הטופס לפעולה של יצירת קשר
runtime/ מכיל קבצים זמניים
tests/ מכיל קבצי סקריפט לבדיקה
views/ מכיל קבצי תצוגה ותבניות של קונטרולרים
layouts/ מכיל קבצי תבניות
main.php התבנית הראשית אשר מופיע בכל העמודים
column1.php תבנית לעמודים אשר משתמשים בעיצוב של עמודה אחת
column2.php תבנית לעמודים אשר משתמשים בעיצוב של שני עמודות
site/ מכיל קבצי תצוגה לקונטרולר 'site'
pages/ מכיל עמודים סטטיים
about.php קובץ התצוגה לעמוד אודות
contact.php קובץ תצוגה לעמוד יצירת קשר
error.php קובץ תצוגה להצגת שגיאות במידה ויש
index.php קובץ תצוגה לפעולה 'index'
login.php קובץ תצוגה לפעולה 'login'
~~~
התחברות למסד נתונים
----------------------
מרבית אפליקציות הווב מגובות בעזרת מסד נתונים. אפליקצית הניסיון שלנו היא אחת מהם. בכדי להשתמש במסד נתונים, אנו צריכים להגדיר לאפליקציה כיצד להתחבר אליה. זה נעשה בקובץ הגדרות האפליקציה אשר ממוקם `WebRoot/testdrive/protected/config/main.php`, המובלט בצורה הבאה,
~~~
[php]
return array(
......
'components'=»array(
......
'db'=»array(
'connectionString'=»'sqlite:protected/data/testdrive.db',
),
),
......
);
~~~
הקוד למעלה מנחה את Yii שהאפליקציה צריכה להתחבר למסד נתונים SQLite תחת `WebRoot/testdrive/protected/data/testdrive.db` בעת הצורך. מסד הנתונים SQLite כבר כלול בשלד האפליקציה שיצרנו זה עתה. מסד נתונים מכיל טבלה אחת בלבד בשם `tbl_user`:
~~~
[sql]
CREATE TABLE tbl_user (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
username VARCHAR(128) NOT NULL,
password VARCHAR(128) NOT NULL,
email VARCHAR(128) NOT NULL
);
~~~
במידה והינך רוצה לעבוד עם מסד נתונים מסוג MySQL במקום, תוכל להשתמש בקובץ התרשים של MySQL המצורף הנמצא ב `WebRoot/testdrive/protected/data/schema.mysql.sql` בכדי ליצור את מסד הנתונים.
» Note|הערה: בכדי להשתמש באפשריות מסדי הנתונים, אנו צריכים להתקין ולהפעיל את תוסף ה PHP בשם PDO ואת התוספים הספציפים לדרייברים בהם אנו נשתמש. בעבור אפליקצית הבדיקה הזו אנו צריכים להפעיל את התוספים `php_pdo` ו `php_pdo_sqlite`.
יישום פעולו CRUD
----------------------------
עכשיו זה החלק המהנה. אנו נרצה ליישם את פעולות ה-CRUD שזה קיצור של יצירה, קריאה, עדכון, מחיקה (Create, Read, Update, Delete) עבור הטבלה `User` שהרגע יצרנו. אפשרות זו הכרחית עבור אפליקציות אשר תלויות במשתמשים במערכת. במקום לבזבז את הזמן לכתיבת הקוד עצמו, אנו נשתמש ב-Gii -- מחולל קוד מבוסס אינטרנט (ווב).
» Info|מידע: Gii קיים החל מגרסא 1.1.2. עבור גרסאות ישנות יותר, אנו יכולים להשתמש בכלי `yiic` בכדי להשיג את אותה המטרה. למידע נוסף, אנא עיין במדריך ליצירת פעולות CRUD על ידי הכלי `yiic`. [יישום פעולות CRUD בעזרת yiic](/doc/guide/quickstart.first-app-yiic)
### הגדרת Gii
בכדי להשתמש ב Gii, אנו קודם צריכים לערוך את הקובץ `WebRoot/testdrive/protected/config/main.php`, הידוע בשמו כ-קובץ [הגדרות](/doc/guide/basics.application#application-configuration) האפליקציה.
~~~
[php]
return array(
......
'import'=»array(
'application.models.*',
'application.components.*',
),
'modules'=»array(
'gii'=»array(
'class'=»'system.gii.GiiModule',
'password'=»'יש להזין סיסמא כאן',
),
),
);
~~~
לאחר מכן, יש לגשת לקישור `http://hostname/testdrive/index.php?r=gii`. אנו נראה מסך המבקש מאתנו להזין סיסמא, אותה סיסמא שציינו בשלב הקודם בקוד המוצג למעלה.
### יצירת מודל משתמשים
לאחר ההתחברות, יש ללחוץ על הקישור `Model Generator`. זה יביא אותנו לעמוד יצירת מודל הבא,

בשדה של `Table Name` יש להזין `tbl_user`. בשדה של `Model Class`, יש להזין `User`. לאחר מכן יש ללחוץ על כפתור `Preview`. זה יציג לנו את הקוד שיווצר. כעת יש ללחוץ על כפתור `Generate`. קובץ חדש בשם `User.php` יווצר תחת התיקיה `protected/models`. כפי שאנו נסביר במהלך המדריך הזה, מחלקת המודל `User` שהרגע יצרנו מאפשרת לנו לתקשר עם הטבלה `tbl_user` אשר נמצאת תחת המחלקה באופן מונחה עצמים.
### יצירת קוד CRUD
לאחר יצירת קובץ מחלקת המודל, אנו ניצור את הקוד אשר מיישם את פעולות ה CRUD עבור המשתמש. אנו בוחרים `במחולל ה-CRUD` במערכת ה-Gii, כפי שמוצג בתמונה למטה,

בשדה `Model Class`, יש להזין `User`. בשדה `Controller ID`, יש להזין `user` (באותיות קטנות בלבד). עכשיו יש ללחוץ על כפתור התצוגה מקדימה - `Preview` ולאחר מכן על כפתור היצירה - `Generate`. סיימנו עם יצירת הקוד עבור פעולות ה-CRUD.
### גישה לעמודים הנוצרו על ידי CRUD
הבא ונראה את התוצאה הסופית של העבודה שנעשתה:
~~~
http://hostname/testdrive/index.php?r=user
~~~
עמוד זה יציג רשימה של רשומות משתמשים מהטבלה `tbl_user`.
לחץ על כפתור ה `Create User` בעמוד. אנו נעבור לעמוד ההתחברות במידה ולא התחברנו עדיין. לאחר ההחברות, אנו נראה טופס שמאפשר לנו להוסיף משתמש חדש. מלא את הטופס ולחץ על כפתור `Create`.
במידה וישנם שגיאות כלשהם בטופס או בתוכן שהוזן, תוצג שגיאה שתמנע מאיתנו לשלוח את הטופס. בחזרה לעמוד רשימת המשתמשים, אנו אמורים לראות את המשתמשים החדשים אותם יצרנו ברשימה.
חזור על השלבים למעלה כדי להוסיף עוד משתמשים. שים לב שעמוד רשימת המשתמשים יציג עמודים אוטומטית אם ישנם יותר מדי משתמשים המוצגים בעמוד אחד.
אם נתחבר כמנהלים עם הפרטים `admin/admin`, אנו נוכל לצפות בעמוד ניהול המשתמשים בקישור הבא:
~~~
http://hostname/testdrive/index.php?r=user/admin
~~~
עמוד זה יציג את רשימת המשתמשים בפורמט טבלאי. אנו נוכל ללחוץ על כותרות העמודות בכדי למיין את הרשימה לפי אותה עמודה עליה לחצנו. נוכל ללחוץ על הכפתורים בכל רשומה בכדי לצפות, לערוך או למחוק את אותה רשומה.
אנו יכולים לצפות בעמודים שונים. כמו כן אנו יכולים לסנן ולחפש אחר מידע אותו אנו מחפשים.
כל האפשרויות הללו מגיעות ללא צורך בכתיבת שורת קוד אחת!


«div class="revision"»$Id: quickstart.first-app.txt 2125 2010-01-21 16:54:29Z qiang.xue $«/div»