0

このリンクによると、私はほとんど構造を達成することができました。しかし、パスエイリアスは私を混乱させています。誰かが私にこれをどのように達成できるか説明してもらえますか?

http://www.yiiframework.com/wiki/155/the-directory-structure-of-the-yii-project-site/#hh5

フロントエンドのコントローラーが共通フォルダーからこれらのモデルにアクセスできるようにします。

ありがとう

4

2 に答える 2

7

setPathOfAlias()YiiBaseクラスを使用して、パスエイリアスを設定します。

Yii::setPathOfAlias('site', $site);

これは、フロントエンドのconfigmain.phpで実行できます。

$site=dirname(dirname(dirname(__FILE__))); // this will give you the / directory
Yii::setPathOfAlias('site', $site);

return array(
    // the config array
    // incase you want to autoload the models from common
    'import'=>array(
        'site.common.models.*'
    )
);

自動ロードなしで尋ねられたように、この場合、最初にモデルを含める必要があり、それからのみそれをインスタンス化できます。含めるには、を使用できますYii::import($alias)。これは、実際にはほぼ同じことを行います(ガイドから)。

インポートされるクラス定義は、最初に参照されるまで実際には含まれません(PHP自動ロードメカニズムを介して実装されます)。

したがって、 common / models /で定義されているDummyModelクラスを使用するには:

Yii::import('site.common.models.DummyModel');
$model = new DummyModel;

main.php構成自体で自動ロードを使用することをお勧めします。モデルは参照されている場合にのみ含まれるため、そのインポート配列を指定してもパフォーマンスが低下することはありません。

于 2012-10-08T05:09:59.107 に答える
1

独自のパスエイリアスを定義する最良の方法は、/ config/ main.phpに「aliases」配列を追加することです。

return array(
    'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
    'name'=>'Project name',
    'aliases'=>array(
        'myalias'=>'/path/to/some/folder',
    ),
    'import'=>array(
        'myalias.models.*'
    )
    ...

そして、コードのどこからでもエイリアスへのパスを取得できます。

echo Yii::getPathOfAlias('myalias');

エイリアスの詳細については、こちらをご覧ください。

于 2014-09-01T10:49:47.723 に答える