このリンクによると、私はほとんど構造を達成することができました。しかし、パスエイリアスは私を混乱させています。誰かが私にこれをどのように達成できるか説明してもらえますか?
http://www.yiiframework.com/wiki/155/the-directory-structure-of-the-yii-project-site/#hh5
フロントエンドのコントローラーが共通フォルダーからこれらのモデルにアクセスできるようにします。
ありがとう
このリンクによると、私はほとんど構造を達成することができました。しかし、パスエイリアスは私を混乱させています。誰かが私にこれをどのように達成できるか説明してもらえますか?
http://www.yiiframework.com/wiki/155/the-directory-structure-of-the-yii-project-site/#hh5
フロントエンドのコントローラーが共通フォルダーからこれらのモデルにアクセスできるようにします。
ありがとう
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構成自体で自動ロードを使用することをお勧めします。モデルは参照されている場合にのみ含まれるため、そのインポート配列を指定してもパフォーマンスが低下することはありません。
独自のパスエイリアスを定義する最良の方法は、/ 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');
エイリアスの詳細については、こちらをご覧ください。