2010-08-04 4 views
-1

Я установил фреймворк zend на свою локальную машину. Я настроил vhost в httpd.conf и добавил строку в мой файл hosts (127.0.0.1 mysite). Я запускаю окна 7. Все работает отлично. Проблема в том, что когда я загружаю на сервер хостинга, путы смешиваются. Я загружаю на удаленный каталог zf-framework. Чтобы получить доступ к странице индекса, мне нужно ввести этот URL: http://mysite/zf-framework/public. Он отображает страницу индекса, но когда я нажимаю какие-либо ссылки на странице, они смешиваются и в конечном итоге становятся чем-то вроде http://mysite/controller/action, когда на самом деле это должно быть http://mysite/zf-framework/public/controller/action. Я нашел обход для этой ситуации ... использовать echo $ this-> baseUrl (link) для любых ссылок, которые у меня есть в layout.phtml. Проблема более серьезная, когда дело доходит до отправки форм. Я не могу использовать baseUrl там .... или я не знаю, как его использовать. Есть ли способ написать некоторые общие файлы конфигурации, чтобы это можно было автоматически разрешить с помощью фреймворка. Скажем, написать что-то в index.php или bootstrap.php, который автоматически исправит пути?проблема с zend framework с путями

ответ

0

Я не нахожусь на этом 100%, но если вы укажете маршрут в своих маршрутах.ini как zf-framework/public/Controller/Action и т. Д., Это должно исправить вашу проблему.

Я бы увидел это как бандад, но я не уверен на 100%, как правильно исправить вашу проблему, а затем вы модифицируете файл vhosts на удаленном сервере, чтобы установить корень документа в общую папку. Если это не вариант, хорошо это должно работать, но знайте, что все ваши файлы потенциально доступны для всех (по крайней мере, ваша структура папок). Я не уверен, какой вред он может сделать (если есть), тогда, если ваша схема базы данных находится в каталоге/data.

Лучше попытаться получить публичный набор в качестве корня сети, если это возможно.

1

Если вы используете Zend_Application, добавьте следующее в свой файл configs/application.ini.

resources.frontController.baseUrl = "/ ваш-путь-сюда"

Если вы не используете Zend_Application, то сделать это в загрузчике, или index.php файл.

$front = Zend_Controller_Front::getInstance(); 
$front->setBaseUrl('/your-path-here'); 

Вы не должны использовать $ this-> BaseUrl() при отправке формы с тем же действием и контроллер (просто оставить вне атрибут действия в виде тега), или при использовании действия редиректор помощник. Однако ссылки в сценариях просмотра потребуют от вас $ this-> baseUrl ('/ url-without-base'), что для меня не так уж плохо.

+0

Вы помогли мне решить еще одну проблему! Привет, спасибо! –

Смежные вопросы