0

これは私のLoadSkinビューヘルパーです。このクラスを使用して、XML内のCSSファイルを呼び出します。下記参照:

public function loadSkin($skin)
{
    $skinData = new Zend_Config_Xml('./skins/' . $skin . '/skin.xml');
    $stylesheets = $skinData->stylesheets->stylesheet->toArray();

    if(is_array($stylesheets))
    {
        foreach($stylesheets as $stylesheet)
        {
            echo $this->view->headLink()->appendStylesheet('/skins/' . $skin . 
                    '/css/' . $stylesheet);
        }       
    }
}

しかし、私には1つの問題があります。3つのCSSファイルがあります。

  • default.css
  • text.css
  • form.css

しかし、ループは間違っています。最初に彼はdefault.cssを取ります。彼がdefault.cssとtext.cssを取得した後。そして最後に、彼はdefault.css、text.css、form.cssを取ります。しかし、正しく機能するループは1つだけです。

何が起こっているか以下を見てください:

http://i.imgur.com/KXVSe.png

誰かがこれを手伝うことができますか?

4

1 に答える 1

1

これは、foreachループ内でエコーしているためです。HeadLinkビューヘルパーは、cssを追加/追加したループの各反復のコンテナーです。その結果、各エコーでは、以前に追加されたすべてのcssを含むコンテナー全体がエコーされるため、代わりにこれを実行します。

 if(is_array($stylesheets))
    {
        foreach($stylesheets as $stylesheet)
        {
             $this->view->headLink()->appendStylesheet('/skins/' . $skin . 
                    '/css/' . $stylesheet);
        }       
    }

次に、layout.phtml内で

<head>
<?echo $this->headLink() ?>
</head>
于 2012-07-14T01:36:38.643 に答える