7

私はしばらくの間、アプリケーションでYii Bootstrapを使用しています。現在、ロードされた CSS ファイルが問題を引き起こしているセクションがあり、そのコントローラーにブートストラップ拡張機能をロードしたくありません。

私の構成ファイルでは、プリロードするようにブートストラップを設定しました。

'preload' => array('log', 'bootstrap')

プリロード配列からブートストラップを削除したところ、エイリアスが正しくないと言って動作を停止しました:

エイリアス「bootstrap.widgets.BootNavbar」は無効です。既存のディレクトリまたはファイルを指していることを確認してください。

ただし、エイリアスは構成ファイルのコンポーネント セクションで定義されており、ブートストラップ コンポーネントがプリロードされている場合は正常に動作します。

'bootstrap' => array(
    'class' => 'ext.bootstrap.components.Bootstrap'
 ),

プリロードせずにブートストラップ拡張機能を機能させるにはどうすればよいですか?

4

3 に答える 3

13

これを呼び出すだけです:

Yii::app()->getComponent("bootstrap");

'preload' => 'bootstrap'実際にこのコマンドをトリガーします。Yii::app()->bootstrap->init()Blizz の提案どおりに電話をかけると、結局init()2 回電話することになり、害になる可能性があります。

于 2012-09-22T20:37:09.213 に答える
4

この方法で、モジュールの init() メソッドでブートストラップ エクステンションを作成します。プリロードは必要ありません。

 if (!Yii::app()->hasComponent('bootstrap')) {
            Yii::setPathOfAlias('bootstrap', realpath(dirname(__FILE__) . '/extensions/bootstrap'));
            Yii::createComponent('bootstrap.components.Bootstrap')->init();
        }

Yii::app() (たとえば、hasComponent メソッド) の下で Bootstrap コンポーネントを管理したい場合は、最後の行を変更できます。

Yii::app()->setComponent('bootstrap',Yii::createComponent('bootstrap.components.Bootstrap'));

このソリューションでは、プリロードや init() は必要ありませんが、エイリアスを Boostrap フォルダーに手動で設定する必要があります。

于 2012-11-09T07:25:52.207 に答える
2

いつでもインポートできます。

Yii::import('ext.bootstrap.components.Bootstrap');
于 2012-07-23T15:49:32.003 に答える