zend框架中的样式表视图助手

时间:2012-06-29 07:16:09

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

我想在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中包含这个样式表 我该怎么办?

2 个答案:

答案 0 :(得分:3)

你所做的是正确的,但是在添加样式表之后,你在视图中回显了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中(在<head>部分中您希望显示样式表链接):

echo $this->headLink();

答案 1 :(得分: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()。

祝你好运......