0 follower

エクステンションを使う

エクステンションを使うには、通常、次の3つのステップが必要です:

  1. Yii's extension repository より、 エクステンションをダウンロードします。
  2. エクステンションを アプリケーションベースディレクトリ のサブディレクトリである extensions/xyz 以下に解凍します。 xyz にはエクステンション名が入ります。
  3. インポート、初期構成を行い、エクステンションを使用します。

各エクステンションはユニークで全てのエクステンション中でそれを特定するための名前を持ちます。 エクステンション名を xyz にした場合、xyz のすべてのファイルを含む ベースディレクトリを示す、application.extensions.xyz というパスエイリアスを いつでも使用できます。

異なるエクステンションは、インポート、初期構成、使用方法に関する異なる要件があります。 以下では、エクステンションに関して、概要 で記述したカテゴリに従い、 一般的な使用方法のシナリオをまとめます。

1. アプリケーションコンポーネント

アプリケーションコンポーネント を使用するために、 最初に アプリケーション初期構成 へ、 components プロパティを以下のように追加する必要があります:

return array(
    // 'preload'=>array('xyz',...),
    'components'=>array(
        'xyz'=>array(
            'class'=>'application.extensions.xyz.XyzClass',
            'property1'=>'value1',
            'property2'=>'value2',
        ),
        // 他のコンポーネント初期構成
    ),
);

その後に、どこでも Yii::app()->xyz を使って、コンポーネントにアクセスできます。 コンポーネントは preload プロパティにリストしない限り、 初めてアクセスした時に生成されます。

2. ウィジェット

ウィジェット は主に ビュー 中で使用されます。 ウィジットクラス XyzClass が 'xyz' エクステンションに属している場合、 ビュー中で下記のように使用できます。

// 本文(body content)を必要としないウィジェット
<?php $this->widget('application.extensions.xyz.XyzClass', array(
    'property1'=>'value1',
    'property2'=>'value2')); ?>
 
// 本文(body content)を含められるウィジェット
// widget that can contain body content
<?php $this->beginWidget('application.extensions.xyz.XyzClass', array(
    'property1'=>'value1',
    'property2'=>'value2')); ?>
 
...ウィジェットの本文(body content)...
 
<?php $this->endWidget(); ?>

3. アクション

アクション は、 特定のユーザーリクエストに応答するために コントローラ により使用されます。 アクションクラス XyzClassxyz エクステンションに属している場合、 コントローラクラスで、CController::actions メソッドを上書き(オーバーライド)すれば それを使用できます:

class TestController extends CController
{
    public function actions()
    {
        return array(
            'xyz'=>array(
                'class'=>'application.extensions.xyz.XyzClass',
                'property1'=>'value1',
                'property2'=>'value2',
            ),
            // other actions
        );
    }
}

その後、 ルート(道筋) test/xyz を用いて、アクションにアクセスできます。

4. フィルタ

フィルタ もまた、 コントローラ により使用されます。 それらは主に、アクション により処理される ユーザーリクエストの前処理や後処理です。 フィルタクラス XyzClassxyz エクステンションに属している場合、 コントローラクラスで、CController::filters メソッドを上書き(オーバーライド)すれば それを使用できます:

class TestController extends CController
{
    public function filters()
    {
        return array(
            array(
                'application.extensions.xyz.XyzClass',
                'property1'=>'value1',
                'property2'=>'value2',
            ),
            // 他のフィルタ
        );
    }
}

上記では、限られたアクションだけにフィルタに適用するために、 最初の配列要素でプラスやマイナス演算子を使用できます。 詳細については、CController ドキュメントを参照してください。

5. コントローラ

コントローラ は、 ユーザーが要求できるアクションのセットを提供します。 コントローラエクステンションを使用するために、 アプリケーション初期構成 中の CWebApplication::controllerMap プロパティへの初期構成が必要です:

return array(
    'controllerMap'=>array(
        'xyz'=>array(
            'class'=>'application.extensions.xyz.XyzClass',
            'property1'=>'value1',
            'property2'=>'value2',
        ),
        // 他のコントローラ
    ),
);

その後、ルート(道筋) xyz/a を 用いてコントローラのアクション a にアクセスできます。

6. バリデータ

バリデータは主に、 モデル クラス (CFormModelCActiveRecord のどちらかから継承された)により使用されます。 バリデータクラス XyzClassxyz エクステンションに属している場合、 モデルクラスで、CModel::rules メソッドを上書き(オーバーライド)すれば それを使用できます:

class MyModel extends CActiveRecord // または CFormModel
{
    public function rules()
    {
        return array(
            array(
                'attr1, attr2',
                'application.extensions.xyz.XyzClass',
                'property1'=>'value1',
                'property2'=>'value2',
            ),
            // 他のバリデーションルール
        );
    }
}

7. コンソールコマンド

コンソールコマンド エクステンションは、通常、 追加コマンドにより yiic ツールを強化します。 コンソールコマンド XyzClassxyz エクステンションに属している場合、 コンソールアプリケーション用の初期構成を設定することで それを使用できます:

return array(
    'commandMap'=>array(
        'xyz'=>array(
            'class'=>'application.extensions.xyz.XyzClass',
            'property1'=>'value1',
            'property2'=>'value2',
        ),
        // 他のコマンド
    ),
);

その後、追加コマンド xyz を備えている yiic ツールを使用できます。

注意: コンソールアプリケーションは、通常、ウェブアプリケーションで 使用されるものとは異なる初期構成ファイルを使用します。 もし、アプリケーションを yiic webapp コマンドを使用して作成した場合、 コンソールアプリケーション protected/yiic 用の初期構成ファイルは、 protected/config/console.php、また、ウェブアプリケーション用の 初期構成ファイルは protected/config/main.php です。

8. モジュール

モジュールの使用方法については、モジュール に関するセクションを参照してください。

9. 一般的なコンポーネント

一般的な コンポーネント を使用するには、 はじめに、下記のようにそのクラスファイルをインクルードする必要があります。

Yii::import('application.extensions.xyz.XyzClass');

その後、クラスのインスタンスの生成やプロパティの設定、メソッドのコールを 行えます。それを継承して新しい子クラスを作成してもいいです。