Files
yii/docs/guide/uk/extension.use.txt
2012-03-05 20:37:50 -05:00

260 lines
12 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Використання розширень
======================
Порядок використання розширень, як правило, включає три кроки:
1. Завантажити розширення з [репозиторію](http://www.yiiframework.com/extensions/) Yii;
2. Розпакувати розширення в підпапку `extensions/xyz`
[базової директорії додатка](/doc/guide/basics.application#application-base-directory),
де `xyz` — імʼя розширення;
3. Підключити, налаштувати і використовувати розширення.
Кожне розширення унікально ідентифікується по імені. Якщо розширення називається `xyz`, то, використовуючи псевдонім шляху `ext.xyz`, ми завжди можемо визначити папку, в якій зберігаються файли даного розширення.
Різні розширення висувають різні вимоги до імпорту, налаштуванню і порядку використання. Нижче, ми наведемо кілька загальних варіантів використання розширень відповідно до класифікації, представленої в [огляді](/doc/guide/extension.overview).
Розширення Zii
--------------
Перед тим, як розповісти про використання сторонніх розширень, варто згадати бібліотеку розширень Zii — набір розширень, що розробляється командою Yii і включається у кожну нову версію.
При використанні розширення 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-component), додавши новий елемент у властивість `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]
// $name відповідає унікальній поведінці компонента
$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',
),
);
}
~~~
Віджет
------
Віджети в основному використовуються у представленнях. Віджетом класу `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` розширення `xyz` можна використовувати шляхом перевизначення методу [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 2890 2011-01-18 15:58:34Z qiang.xue $</div>