如何在Zend Framework模块中访问静态资产?

时间:2010-02-19 16:41:22

标签: php zend-framework

在Zend Framework 1.10应用程序中,我在模块api中有一个控制器UsersController,在该控制器的索引视图中我想引用静态资产(如javascript文件)。如果不将文件放在主要公共场所,我怎么能这样做?

所以,我们有一个像这样的目录设置:

zfproj/
../application/modules/api/controllers/UserController.php ../application/modules/api/views/scripts/users/index.phtml
../application/modules/api/public/javascript/apimodule.js
../application/controllers/
../application/views/
../public/

我希望能够在视图中包含apimodule.js(在本例中为users / index视图)。理想情况下,这可以在不向zfproj / public

添加任何内容的情况下完成

这背后的意图是创建一个可以部署到ZF 1.10应用程序中的模块,该应用程序是完全独立的,不需要将资源(如Javascript文件)添加到应用程序现有的公共/ javascript文件中。

1 个答案:

答案 0 :(得分:3)

通常,所有可公开访问的资产都是公开的。它应该是您的应用程序的Web根目录,通常您将apache虚拟主机的DOCUMENT_ROOT设置为此文件夹。我不确定你为什么要在webroot之外存储客户端文件(javascript,css等)。你能详细说明你的目录/应用程序结构(可能暗示你要包含的文件的位置)吗?

修改

你所要求的应该是可能的。要创建一个独立的模块,我想你只需要在主公共文件夹中移动“api”,模块就会有自己的引导程序,或者你必须根据模块名称(“api”)在主引导程序中做一些事情。在这种情况下)。您必须相应地修改包含路径。在这种情况下,您需要添加.htaccess文件来保护您的代码目录。

../application/controllers
../public/api/controllers
../public/api/javascript/apimodule.js
../public/api/index.php

您还可以在公用文件夹中创建一个指向api公用文件夹的符号链接。所以,

../public/api > ../application/modules/api/public

这将允许访问公共但保护您的代码文件。我经常做的一件事是将subversion外部检入公共文件夹,该文件夹只指向模块的公共文件夹。我的CMS看起来像这样:

application/modules/cms
application/modules/cms/ui (public facing cms UI)
public/ui (svn:external pointing to application/modules/cms/ui)

HTH会给你一些想法。