【问题标题】:stylesheet view helper in zend frameworkZend 框架中的样式表视图助手
【发布时间】:2012-06-30 17:45:00
【问题描述】:

我想在 head 标签内附加 css 样式表,但被附加到 body 标签。 这是我所做的: 我有一个控制器“国家”,动作为“索引”,我的观点是 index.phtml

index.phtml 包含:

<?php
 $this->headLink()->appendStylesheet($this->baseUrl().'/js/dojo-1.7/dojo/resources/dojo.css')
             ->appendStylesheet($this->baseUrl().'/js/dojo-1.7/dojox/grid/resources/claroGrid.css');
 echo $this->headLink();

这会导致样式表被附加到 body 标记内。 我只希望将这些样式表附加到此操作中。我不想在我的 layout.phtml 中包含这个样式表 我该怎么做?

【问题讨论】:

    标签: zend-framework zend-view zend-layout


    【解决方案1】:

    您所做的是正确的,但您只是在添加样式表后在视图中回显 headLink(),这是在错误位置输出链接的原因。更改您的代码,以便您拥有:

    在 index.phtml 中:

    $this->headLink()->appendStylesheet($this->baseUrl().'/js/dojo-1.7/dojo/resources/dojo.css')
             ->appendStylesheet($this->baseUrl().'/js/dojo-1.7/dojox/grid/resources/claroGrid.css');
    

    然后在 layout.phtml 中(在您希望样式表链接出现的 &lt;head&gt; 部分中):

    echo $this->headLink();
    

    【讨论】:

      【解决方案2】:

      您将其添加到了错误的位置。
      如果您以这种方式从 .phtml 中添加样式表,那么您将位于文档的正文中。
      要将样式表添加到单个页面的头部,请从控制器内的操作代码中添加样式表:

      public function someAction() {
          $this->view->headLink()->appendStylesheet($this->baseUrl().'/js/dojo-1.7/dojo/resources/dojo.css');
      }
      

      或者,如果您想为控制器的所有操作添加样式表,您可以在控制器的 init() 方法中使用相同的代码:

      public function init() {
           $this->view->headLink()->appendStylesheet($this->baseUrl().'/js/dojo-1.7/dojo/resources/dojo.css');    
      }
      

      如果您需要覆盖当前样式表,可以使用 setStylesheet(),也可以使用 prependStylesheet() 或 appendStylesheet()。

      祝你好运……

      【讨论】:

      • 您也可以在视图中添加占位符内容,因为它是在布局之前呈现的。
      • 抱歉,我以为他的布局中已经有了占位符。我也没有意识到代码可以从视图中工作(从未真正考虑过),因为我永远不会考虑将这种代码放在视图中。不过我的立场是正确的,谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      • 2011-03-25
      • 2012-06-02
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      • 2014-06-25
      相关资源
      最近更新 更多