mirror of
https://github.com/yiisoft/yii.git
synced 2026-03-12 11:06:54 +01:00
266 lines
12 KiB
Plaintext
266 lines
12 KiB
Plaintext
שימוש בהרחבות
|
||
================
|
||
|
||
שימוש בהרחבה בדרך כלל כולל את שלושת השלבים הבאים:
|
||
|
||
1. הורדת ההרחבה [מספרית ההרחבות](http://www.yiiframework.com/extensions/) של Yii.
|
||
2. חילוץ קבצי ההרחבה תחת התיקיה `extensions/xyz` הנמצאת בתיקיה [ראשית](/doc/guide/basics.application#application-base-directory) של האפליקציה, כש `xyz`הינו שם ההרחבה.
|
||
3. ייבוא, הגדרה ושימוש בהרחבה.
|
||
|
||
לכל הרחבה יש שם המייחד אותה משאר ההרחבות. בהתחשב שיש לנו הרחבה בשם `xyz`, אנו תמיד יכולים להשתמש בנתיב המקוצר `ext.xyz` בכדי לאתר את התיקיה הראשית שלה המכילה את כל הקבצים של `xyz`.
|
||
|
||
» Note|הערה: הנתיב המקוצר `ext` קיים מגרסא 1.0.8. קודם לכן, היה צורך להשתמש ב `application.extensions` בכדי להתייחס לתיקיה המכילה את כל ההרחבות. בתיאור הבא, אנו מניחים ש `ext` מוגדר. יהיה צורך בלהחליף אותו עם `application.extensions` במידה והינך משתמש בגרסא 1.0.7 ומטה.
|
||
|
||
הרחבות שונות כוללות דרישות שונות בנוגע לייבוא שלהם, הגדרות ושימוש. בחלק הבא, אנו מסכמים מקרים נפוצים של שימוש בהרחבות, לפי הקטגוריות שלהם המתוארות [סקירה](/doc/guide/extension.overview).
|
||
|
||
|
||
הרחבות Zii
|
||
--------------
|
||
|
||
לפני שנתחיל להסביר בנוגע לשימוש הרחבות צד-שלישי, אנו נרצה קודם להציג את ספרית ה Zii, שמפותחת על ידי צוות הפיתוח של Yii וכלולה בכל הגרסאות של Yii החל מגרסא 1.1.0. ספרית ה Zii מאוחסנת כפרוייקט גוגל בשם [zii](http://code.google.com/p/zii/).
|
||
|
||
בעת שימוש בהרחבה מספרית Zii, יש צורך להתייחס למחקה על ידי שימוש בנתיב מקוצר בפורמטר של `zii.path.to.ClassName`. במקרה הזה, הנתיב הראשי `zii` כבר הוגדר מראש על ידי Yii. נתיב זה מתייחס לתיקיה הראשית של ספריית ה Zii. לדוגמא, כדי להשתמש ב [CGridView], אנו נשתמש בקוד הבא בתוך קובץ תצוגה כשאנו מתייחסים להרחבה:
|
||
|
||
~~~
|
||
[php]
|
||
$this-»widget('zii.widgets.grid.CGridView', array(
|
||
'dataProvider'=»$dataProvider,
|
||
));
|
||
~~~
|
||
|
||
|
||
רכיב באפליקציה
|
||
---------------------
|
||
|
||
בכדי להשתמש [ברכיב אפליקציה](/doc/guide/basics.application#application-component), אנו קודם צריכים לשנות את [הגדרות האפליקציה](/doc/guide/basics.application#application-configuration) על ידי הוספת רשומה (אלמנט) חדשה למאפיין של `components`, כפי שמוצג בדוגמא הבאה:
|
||
|
||
~~~
|
||
[php]
|
||
return array(
|
||
// 'preload'=»array('xyz',...),
|
||
'components'=»array(
|
||
'xyz'=»array(
|
||
'class'=»'ext.xyz.XyzClass',
|
||
'property1'=»'value1',
|
||
'property2'=»'value2',
|
||
),
|
||
// הגדרות רכיבים נוספים
|
||
),
|
||
);
|
||
~~~
|
||
|
||
לאחר מכן, אנו יכולים לגשת לרכיב בכל מקום על ידי `Yii::app()-»xyz`. הרכיב יווצר בצורה עצלה (זאת אומרת יווצר כשהוא נקרא בפעם הראשונה), אלה אם כן אנו נרשום את שמו במאפיין של `preload` בהגדרות האפליקציה.
|
||
|
||
התנהלות/התנהגות
|
||
--------
|
||
|
||
[התנהלות/התנהגות](/doc/guide/basics.component#component-behavior) ניתנת לשימוש בכל מיני רכיבים. השימוש בהם כרוך בשני שלבים. בשלב הראשון, ההתנהלות מצורפת לרכיב כלשהו. בשלב השני, מתודת התנהלות נקראת על ידי הרכיב אליו היא צורפה. לדוגמא:
|
||
|
||
~~~
|
||
[php]
|
||
// הפרמטר הראשון הוא יחודי ומשמש לצורך זיהוי ההתנהלות
|
||
$component-»attachBehavior($name,$behavior);
|
||
// המתודה test נמצאת במחלקה של $behavior
|
||
$component-»test();
|
||
~~~
|
||
|
||
בדרך כלל, התנהלות מצורפת לרכיב דרך הגדרות ולא על ידי קריאה למתודה `attachBehavior`. לדוגמא, בכדי לצרף התנהלות [רכיב](/doc/guide/basics.application#application-component) באפליקציה, אנו נשתמש [בהגדרות](/doc/guide/basics.application#application-configuration) האפליקציה הבאות:
|
||
|
||
~~~
|
||
[php]
|
||
return array(
|
||
'components'=»array(
|
||
'db'=»array(
|
||
'class'=»'CDbConnection',
|
||
'behaviors'=»array(
|
||
'xyz'=»array(
|
||
'class'=»'ext.xyz.XyzBehavior',
|
||
'property1'=»'value1',
|
||
'property2'=»'value2',
|
||
),
|
||
),
|
||
),
|
||
//....
|
||
),
|
||
);
|
||
~~~
|
||
|
||
הקוד למעלה, מצרף את ההתנהלות `xyz` לרכיב האפליקציה `db`. אנו עושים זאת מאחר והמחלקה [CApplicationComponent] מגדירה מאפיין בשם `behaviors`. על ידי הגדרת מאפיין זה עם רשימה של הגדרות התנהלות, הרכיב יצרף את ההתנהלויות הללו בזמן האתחול שלו.
|
||
|
||
עבור המחלקות [CController], [CFormModel] ו [CActiveRecord] שבדרך כלל דורשות הרחבה, צירוף התנהלויות נעשית על ידי דריסה של המתודה `()behaviors`. המחלקה תצרף אוטומטית את ההתנהלויות המוגדרות במתודה זו בזמן אתחול. לדוגמא,
|
||
|
||
~~~
|
||
[php]
|
||
public function behaviors()
|
||
{
|
||
return array(
|
||
'xyz'=»array(
|
||
'class'=»'ext.xyz.XyzBehavior',
|
||
'property1'=»'value1',
|
||
'property2'=»'value2',
|
||
),
|
||
);
|
||
}
|
||
~~~
|
||
|
||
|
||
וידג'ט
|
||
------
|
||
|
||
שימוש [בוידג'טים](/doc/guide/basics.view#widget) בדרך כלל נעשה בקבצי [תצוגה](/doc/guide/basics.view). נניח ומחלקת הוידג'ט `XyzClass` שייכת להרחבה `xyz`, אנו יכולים להשתמש בו בתוך קובץ תצוגה בצורה הבאה,
|
||
|
||
~~~
|
||
[php]
|
||
// וידג'ט שאינו דורש תוכן
|
||
«?php $this-»widget('ext.xyz.XyzClass', array(
|
||
'property1'=»'value1',
|
||
'property2'=»'value2')); ?»
|
||
|
||
// וידג'ט שדורש תוכן
|
||
«?php $this-»beginWidget('ext.xyz.XyzClass', array(
|
||
'property1'=»'value1',
|
||
'property2'=»'value2')); ?»
|
||
|
||
...תוכן הוידג'ט....
|
||
|
||
«?php $this-»endWidget(); ?»
|
||
~~~
|
||
|
||
פעולה
|
||
------
|
||
|
||
שימוש [בפעולות](/doc/guide/basics.controller#action) נעשה על ידי [הקונטרולרים](/doc/guide/basics.controller) בכדי לענות על בקשות משתמש ספציפיות. נניח ומחלקת הפעולה `XyzClass` השייכת להרחבה בשם `xyz`, אנו יכולים להשתמש בה על ידי דריסה של המתודה [CController::actions] במחלקה של הקונטרולר:
|
||
|
||
~~~
|
||
[php]
|
||
class TestController extends CController
|
||
{
|
||
public function actions()
|
||
{
|
||
return array(
|
||
'xyz'=»array(
|
||
'class'=»'ext.xyz.XyzClass',
|
||
'property1'=»'value1',
|
||
'property2'=»'value2',
|
||
),
|
||
// פעולות נוספות
|
||
);
|
||
}
|
||
}
|
||
~~~
|
||
|
||
לאחר מכן, ניתן לגשת לפעולה על ידי [הניתוב](/doc/guide/basics.controller#route) `test/xyz`.
|
||
|
||
פילטר
|
||
------
|
||
|
||
שימוש [פילטרים](/doc/guide/basics.controller#filter) נעשה גם כן על ידי [הקונטרולרים](/doc/guide/basics.controller). המטרה העיקרית שלהם היא הרצתם לפני ואחרי [פעולות](/doc/guide/basics.controller#action) מסויימות בכדי לבצע בדיקות או שינויים אחרים. נניח ומחלקת הפילטר בשם `XyzClass` השייכת להרחבה בשם `xzy`, אנו יכולים להשתמש בו על ידי דריסה של המתודה [CController::filters] במחלקת הקונטרולר:
|
||
|
||
~~~
|
||
[php]
|
||
class TestController extends CController
|
||
{
|
||
public function filters()
|
||
{
|
||
return array(
|
||
array(
|
||
'ext.xyz.XyzClass',
|
||
'property1'=»'value1',
|
||
'property2'=»'value2',
|
||
),
|
||
// פילטרים נוספים
|
||
);
|
||
}
|
||
}
|
||
~~~
|
||
|
||
בדוגמא למעלה, אנו יכולים להשתמש באופרטורים +, - באלמנט הראשון במערך בכדי לצרף את הפילטר למספר פעולות בלבד. למידע נוסף יש לקרוא את הדוקומנטציה אודות [CController].
|
||
|
||
קונטרולר
|
||
----------
|
||
|
||
[קונטרולר](/doc/guide/basics.controller) מספק סט של פעולות שניתנות לבקשה על ידי המשתמשים. בכדי להשתמש בהרחבה לקונטרולר, אנו צריכים להגדיר את המאפיין [CWebApplication::controllerMap] בקובץ [הגדרות האפליקציה](/doc/guide/basics.application#application-configuration):
|
||
|
||
~~~
|
||
[php]
|
||
return array(
|
||
'controllerMap'=»array(
|
||
'xyz'=»array(
|
||
'class'=»'ext.xyz.XyzClass',
|
||
'property1'=»'value1',
|
||
'property2'=»'value2',
|
||
),
|
||
// קונטרולרים נוספים
|
||
),
|
||
);
|
||
~~~
|
||
|
||
לאחר מכן, הפעולה `a` ניתנת לגישה על ידי [ניתוב](/doc/guide/basics.controller#route) `xyz/a`.
|
||
|
||
ולידטור (אימות נתונים)
|
||
---------
|
||
|
||
ולידטור בדרך כלל משומש בתוך מחלקת [מודל](/doc/guide/basics.model) (אחת שיורשת מהמחלקה [CFormModel] או [CActiveRecord]).
|
||
נניח וישנה מחלקת ולידטור בשם `XyzClass` השייכת להרחבה בשם `xyz`, אנו יכולים להשתמש בה על ידי דריסה של המתודה [CModel::rules] במחלקת המודל שלנו:
|
||
|
||
~~~
|
||
[php]
|
||
class MyModel extends CActiveRecord // or CFormModel
|
||
{
|
||
public function rules()
|
||
{
|
||
return array(
|
||
array(
|
||
'attr1, attr2',
|
||
'ext.xyz.XyzClass',
|
||
'property1'=»'value1',
|
||
'property2'=»'value2',
|
||
),
|
||
// חוקי אימות נתונים נוספים
|
||
);
|
||
}
|
||
}
|
||
~~~
|
||
|
||
מסוף פקודות
|
||
---------------
|
||
|
||
הרחבות [מסוף הפקודות](/doc/guide/topics.console) בדרך כלל משפרת את הכלי `yiic` בפקודה נוספת. נניח שיש לנו מחלקה לפקודה `XyzClass` השייכת להרחבה `xyz`, אנו יכולים להשתמש בה על ידי הגדרת ההגדרות למסוף הפקודות באפליקציה:
|
||
|
||
~~~
|
||
[php]
|
||
return array(
|
||
'commandMap'=»array(
|
||
'xyz'=»array(
|
||
'class'=»'ext.xyz.XyzClass',
|
||
'property1'=»'value1',
|
||
'property2'=»'value2',
|
||
),
|
||
// פקודות נוספות
|
||
),
|
||
);
|
||
~~~
|
||
|
||
לאחר מכן, אנו יכולים להשתמש בכלי `yiic` המכיל פקודה חדשה בשם `xyz`.
|
||
|
||
» Note|הערה: קובץ הגדרות של מסוף הפקודות הוא שונה מקובץ ההגדרות של אפליקצית ווב. במידה ואפליקציה נוצרה בעזרת פקודת `yiic webapp`, קובץ ההגדרות של מסוף הפקודות `protected/yiic` הינו `protected/config/console.php`, בזמן שקובץ ההגדרות לאפליקצית ווב הינו `protected/config/main.php`.
|
||
|
||
|
||
מודול
|
||
------
|
||
|
||
אנא קרא את החלק אודות [מודולים](/doc/guide/basics.module#using-module) וכיצד לעבוד עמם.
|
||
|
||
רכיב כללי
|
||
-----------------
|
||
|
||
בכדי להשתמש [רכיב](/doc/guide/basics.component) כללי, אנו קודם צריכים להוסיף את קובץ המחלקה שלו על ידי שימוש ב
|
||
|
||
~~~
|
||
Yii::import('ext.xyz.XyzClass');
|
||
~~~
|
||
|
||
לאחר מכן, אנו יכולים ליצור אובייקט של המחלקה, להגדיר את המאפיינים שלו, ולקרוא למתודות אשר נמצאות בו. כמו כן אנו יכולים להרחיב אותו כדי ליצור תת מחלקה חדשה.
|
||
|
||
|
||
«div class="revision"»$Id: extension.use.txt 1780 2010-02-01 20:32:50Z qiang.xue $«/div» |