仅在未指定任何操作时使用 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-&gt;getResponse()-&gt;clearBody();

编辑:

好的,试试这个来代替样式表:

$this->headLink()->appendStylesheet('css/global.css');
echo $this->headLink();

【讨论】:

再次感谢,但我仍然有问题。 我想我明白为什么firebug说找不到文件了,它可能在www.domain.com/index/index/css/global.css中寻找它,你能确认一下吗?如果是这种情况,您可能只需将附加样式表更改为:$this-&gt;headLink()-&gt;appendStylesheet('/css/global.css'); Firebug 显示他尝试加载它大约 0.5 秒,然后它消失并说 0 个请求:-/

以上是关于仅在未指定任何操作时使用 Zend Framework 附加样式表的主要内容,如果未能解决你的问题,请参考以下文章

本地化应用程序仅在非基本语言上崩溃,并且仅在未使用Xcode运行时崩溃

仅在未运行时使用 cron 运行 python 脚本

为啥 KeyListener 仅在未按下按钮时才起作用?

如何测试通道是不是关闭并仅在未关闭时发送给它

仅在未给出插槽时添加 v-html 属性

Laravel Blade 仅在未登录时显示