3

私はyiiが初めてです。yii でモジュールを作成しました。ファイル構造は次のとおりです。

 -yii
  -protected
     -modules
        -admin
           -controller
           -model
           -view
               -layout
                    -main.php
           -css
               -style.css
           -images
               -logo.jpg

こんな風にレイアウトできました

'modules'=>array(
    // uncomment the following to enable the Gii tool

           'admin'=>array(
                 'layoutPath' => 'protected/modules/admin/views/layouts',  ;

)

そして今、レイアウトは管理モジュールからレンダリングされています。問題は、使用してスタイルシートを読み込めないことです

<link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/protected/modules/admin/css/reset.css"  media="all">

スタイルシートを yii にロードする正しい方法を知っている人はいますか?

4

1 に答える 1

10

保護されたフォルダーの下にあるものはすべて、実際に保護されており、公開されていません。

あなたの場合、モジュールを使用していて、ファイルが保護されたフォルダー内にある場合、それらを公開してアクセスできるようにする必要があります。「アセット」と呼ばれる、Yii で公開されたもののデフォルトのパブリック フォルダ。公開するには、CAssetManagerを使用します。

最初に、パブリック アクセスが必要なすべての css、js、およびイメージを含むフォルダーを作成します。好きな名前を付けますが、標準の「アセット」なので、ファイル構造は次のようになります。

 -yii
  -protected
     -modules
        -admin
           -controller
           -model
           -view
               -layout
                    -main.php
           -assets
               -css
                   -style.css
               -js
               -images
                   -logo.jpg

モジュールで、公開されたアセットのパブリック URL を格納するプロパティと、それにアクセスするメソッドを作成します。

private $_assetsUrl;

public function getAssetsUrl()
{
    if ($this->_assetsUrl === null)
        $this->_assetsUrl = Yii::app()->getAssetManager()->publish(
            Yii::getPathOfAlias('admin.assets') );
    return $this->_assetsUrl;
}

その後、次のようにアセットにアクセスできます。

<link rel="stylesheet"
         type="text/css"
         href="<?php echo $this->module->assetsUrl; ?>/css/main.css"/>
   ...
   <div id="logo">
   <?php echo CHtml::link(
                 CHtml::image($this->module->assetsUrl.'/images/logo.png'),
                 array('/xxii')); ?>
   </div>

参考文献

于 2012-10-19T13:42:04.060 に答える