仅在未指定任何操作时使用 Zend Framework 附加样式表
Posted
技术标签:
【中文标题】仅在未指定任何操作时使用 Zend Framework 附加样式表【英文标题】:Append stylesheet with Zend Framework only works if no action is specified 【发布时间】:2012-08-02 16:41:57 【问题描述】:我开始使用 Zend Framework 并尝试在我的 layout.phtml 中添加一些样式表和 javascript 文件:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>LoremIpsum</title>
<?php echo $this->headLink()->appendStylesheet('css/global.css'); ?>
</head>
这个问题是,它只有在 url 中没有指定操作时才有效。 例如,它适用于此: www.domain.com、www.domain.com/index、www.domain.com/login
但如果我添加动作,即使它是 www.domain.com/index/index 它停止工作。
我注意到在这种情况下 index.php 被调用了两次并调用了 ErrorController。 但输出显示没有错误。这是没有样式表信息的预期输出。
任何想法我的布局有什么问题?
编辑 1:
错误报告已激活并在其他情况下有效。 HTML 标记是正确的。 Firebug 显示我的 css 文件没有找到,但路径不会错,因为没有指定的操作它可以正常工作。
【问题讨论】:
【参考方案1】:您可以使用 BaseUrl() 查看助手:
<?php echo $this->headLink()->appendStylesheet($this->baseUrl().'/css/global.css'); ?>
那应该没问题了……
【讨论】:
【参考方案2】:如果您想查看错误,则必须将工作环境从生产环境更改为开发环境(通过将 SetEnv APPLICATION_ENV development
添加到 .htaccess 文件来完成)
关于layout randering 两次,在errorController 文件的errorAction 中加入(将其作为action 的第一行):$this->getResponse()->clearBody();
编辑:
好的,试试这个来代替样式表:
$this->headLink()->appendStylesheet('css/global.css');
echo $this->headLink();
【讨论】:
再次感谢,但我仍然有问题。 我想我明白为什么firebug说找不到文件了,它可能在www.domain.com/index/index/css/global.css
中寻找它,你能确认一下吗?如果是这种情况,您可能只需将附加样式表更改为:$this->headLink()->appendStylesheet('/css/global.css');
Firebug 显示他尝试加载它大约 0.5 秒,然后它消失并说 0 个请求:-/以上是关于仅在未指定任何操作时使用 Zend Framework 附加样式表的主要内容,如果未能解决你的问题,请参考以下文章