Как я могу получить доступ к статическим ресурсам в модуле Zend Framework? - PullRequest
0 голосов
/ 19 февраля 2010

В приложении Zend Framework 1.10 у меня есть контроллер UsersController в модуле API, и в индексном представлении этого контроллера я хотел бы сослаться на статический актив (например, файл JavaScript). Как я могу сделать это, не помещая файл в основной каталог?

Итак, у нас есть настройка каталога, подобная этой:

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

Я хочу иметь возможность включить apimodule.js в представление (в данном случае представление users / index). В идеале это можно было бы сделать без добавления чего-либо в zfproj / public

Целью этого является создание модуля, который можно развернуть в приложении ZF 1.10, полностью автономного и не требующего добавления ресурсов (например, файлов Javascript) в существующие публичные файлы / файлы javascript приложений.

1 Ответ

3 голосов
/ 20 февраля 2010

Как правило, все ваши общедоступные ресурсы становятся публичными. Это веб-корень вашего приложения, и обычно вы устанавливаете DOCUMENT_ROOT вашего виртуального хоста apache в эту папку. Я не уверен, почему вы хотите хранить клиентские файлы (javascript, css и т. Д.) Вне webroot. Можете ли вы подробнее рассказать о структуре вашего каталога / приложения (возможно, намекая на местоположение файла, который вы хотите включить)?

Редактировать

То, что вы просите, должно быть возможным. Чтобы создать автономный модуль, я думаю, что вы просто переместите «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 даст вам несколько идей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...