1

yiiコンポーネントもテーマ機能をサポートしているかどうか疑問に思いましたか?私の環境では、現在、コンポーネントはcomponent/views/フォルダー内のファイルのみを考慮しています。
テーマも使用しているので、themes/themeName/フォルダーの下のビューを探すようにコンポーネントに指示すると便利です。

以下の方法を使用してこれを回避することはできますが、これがそれを行うためのyii-wayであるとは確かに感じません。

protected function renderContent()
{
    $view = './../../../themes/'.Yii::app()->theme->name.'/views/viewName';
    $this->render($view);
}  

これを達成するためのよりエレガントなソリューションを知っていますか?

4

1 に答える 1

3

コンポーネントにテーマはありません。主な理由は、コンテンツをレンダリングすることを目的としていないためです。それでも問題はありませんが、必要な場合もあります。

最も簡単な解決策は、おそらくそれを読みやすくすることです。パスエイリアスを使用すると常に役立ちます。

protected function renderContent()
{
    $view = 'webroot.themes.'.Yii::app()->theme->name.'.views.viewName';
    $this->render($view);
}  

または、コンポーネントのメソッドを追加するか、必要に応じてCComponentを拡張してすべてのコンポーネントに適用することもできます。

public function getViewsPath(){
    return 'webroot.themes.'.Yii::app()->theme->name.'.views';
}

または、パスエイリアスを設定することもできます。

Yii::setPathOfAlias('theme','webroot.themes.'.Yii::app()->theme->name);

次に、プロセスの十分早い段階で実行すれば、アプリケーションのどこでもそれを使用できます。

于 2012-10-16T07:36:23.647 に答える