【问题标题】:Zend Framework , Trouble with pathsZend 框架,路径问题
【发布时间】:2012-04-04 21:22:38
【问题描述】:

我正在编写我的第一个 zend 应用程序,按照官方用户指南,我设置了一个标准 zend 应用程序(使用 zend studio 9 和 ZF 1.11),我想将图像和 CSS 样式表添加到我的 .phtml 页面。当我将 css 文件放在“myApplicationName/public/css”中时,一切正常,但是当我尝试将它们放在另一个目录中时,例如“myApplicationName/application/layouts/css”,它们不会被考虑, 我应该使用什么样的路径将它们链接到 phtml 页面?

我尝试过相对路径,例如:

<link rel="stylesheet" type="text/css" media="screen" href="../../css/layout_look_like.css" />

还有:

<link rel="stylesheet" type="text/css" media="screen" href="/application/layouts/css/layout_look_like.css" />

但它似乎不起作用,

我也尝试过使用 $this->baseUrl() 的路径,但 &lt;?php echo $this-&gt;baseUrl();?&gt; 没有返回任何内容。

感谢您的帮助。

【问题讨论】:

    标签: css zend-framework base-url


    【解决方案1】:

    CSS、图像和 JS 以及任何其他可公开访问的静态资产必须位于 public 文件夹下,因为这是您的 Web 服务器 DOCUMENT_ROOT(即http://yourdomain/)。除此之外,您可以使用任何您喜欢的结构。

    【讨论】:

    • 但是如果我使用 Module Structure 我必须在哪里存储我的 css 和 js 文件呢?每个模块代表一个单独的页面。每个页面都有自己的样式和js脚本。我是否必须将这些文件放入 /public 目录?或者我应该这样做Module/views/scripts/css 还是这个Module/views/scripts/controllerName/js/public 中究竟需要存储什么 css 和 js?属于 layout.phtml 的文件?但是将布局的css和js存储在/layout/script/css/layoutscript/js中不是更好吗?
    • /public 是唯一可以通过 URL 访问的东西,因此您可以直接从模块结构中服务器 css/js。如果您真的想将它们存储在这里,那么我想您可以使用符号链接Symfony 1.x 在其插件基础架构中执行类似的操作。
    【解决方案2】:

    您的 CSS 文件应位于 public 目录中。不需要将它们放在您的application 目录中。如果您真的需要这样做,您可以创建一个指向public 目录的符号链接。

    要将 CSS 文件(存储在 public 目录中)包含到您的视图/布局中,请使用:

    <?php echo $this->headLink()->appendStylesheet($this->baseUrl('/styles/basic.css')); ?>
    

    【讨论】:

    • 您应该使用$this-&gt;baseUrl('/styles/basic.css') 而不仅仅是路径。否则,当您的应用程序从子目录运行并且您的 baseUrl 不是 / 时,您可能会遇到问题
    • @mahok 感谢您的指出,您是正确的。我已经编辑了答案。
    • 好的,谢谢你的回复,我打算把布局和它的css放到同一个目录中。
    • 但是 .css 和 .js 文件的目录结构是什么?如果我使用带有 ZF 的模块:Module/views/scripts/jsModule/views/scripts/css,哪一个是正确的?还是Module/views/jsModule/views/css?还是Module/views/scripts/controllerName/cssModule/views/scripts/controllerName/js?谢谢。
    【解决方案3】:

    您必须为您的 layout_look_like.css 文件编写如下所述的代码

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

    【讨论】:

      猜你喜欢
      • 2012-01-31
      • 1970-01-01
      • 2012-06-05
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 2012-08-10
      相关资源
      最近更新 更多