0

不知道我在这里做错了什么,但似乎框架只能在每个控制器上的索引操作中找到 style.css。我从 layout.phtml 中调用它,如下所示:

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

所以当我去 project.local/account 时,我会找到样式。如果我去 project.local/account/action 没有样式......实际上如果我去 project.local/account/index ......没有样式。所以......这是一个奇怪的错误,或者至少它是一个 n00b

编辑:当我在 Firefox 上打开代码控制台并尝试遵循 css/styles.css 时,我发现以下错误消息:

<pre>#0 /home/fiodorovich/library/ZendFramework/library/Zend/Controller/Action.php(515): Zend_Controller_Action->__call('cssAction', Array)
#1/home/fiodorovich/library/ZendFramework/library/Zend/Controller/Dispatcher/Standard.php(295): Zend_Controller_Action->dispatch('cssAction')
#2 /home/fiodorovich/library/ZendFramework/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#3 /home/fiodorovich/library/ZendFramework/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch()
#4 /home/fiodorovich/library/ZendFramework/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#5 /home/fiodorovich/public_html/gisele/public/index.php(26): Zend_Application->run()
#6 {main}  </pre>

  <h3>Request Parameters:</h3>
  <pre>array (
  'controller' =&gt; 'gisele',
  'action' =&gt; 'css',
  'module' =&gt; 'default',
)  </pre>
4

1 回答 1

2

您传递给的参数appendStylesheet只是在您的 HTML 中盲目输出,框架实际上并没有寻找该文件。

这适用于某些页面而不是其他页面的原因是您提供appendStylesheet了相对链接。基本上,当浏览器遇到相对链接时,它会在最后一个斜杠处去掉当前 URL,然后添加链接。

因此,在 project.local/account 上,浏览器在 project.local/css/styles.css 中查找 CSS,但在 project.local/account/action 上,浏览器在 project.local/account 中查找 CSS /css/styles.css。

长话短说,在您的参数中添加一个前导斜杠,这将使其成为一个根相对链接,该链接将解析到所有页面上的相同位置:

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

正如 Phil 在评论中指出的那样,上述示例仅在您的 ZF 应用程序安装在站点的根目录中时才有效(如本例所示)。无论站点位于站点层次结构中的哪个位置,使用 BaseUrl 帮助器都将输出正确的路径。

$this->headLink()->appendStylesheet($this->baseUrl('css/styles.css'));
于 2011-05-17T00:18:04.813 回答