Zend View Helper странная проблема
Я работал над проектом Zend Framework на локальном хосте (ОС: Snow Leopard), и когда я загрузил файлы на хост-сервер (виртуальный хостинг), я получил несколько ошибок о помощнике вида, который я там использовал.
Более конкретно:
Структура проекта выглядит следующим образом: (я пропустил некоторые не относящиеся к делу подпапки, а цифры в парантезе приведены здесь только для справки, они не включены в имя папки в проекте)
application
-configs
-controllers
-layouts
--scripts
-models
-modules
--admin
---controllers
---models
---views(2)
----filters
----helpers(2)
----scripts
-views(1)
--helpers(1)
--scripts
library
public
В папке helpers(1) у меня есть помощник вида BaseURL.php:
class Zend_View_Helper_BaseURL
{
function baseURL()
{
$fc = Zend_Controller_Front::getInstance();
return $fc->getBaseUrl();
}
}
Я использую его, например, в макете, чтобы написать пути для таких вещей, как CSS-файлы, JS-файлы, что-то вроде этого:
<script src="<?php echo $this->baseURL();?>/public/js/somejavascript.js></script>
И обычно я использую его, когда мне нужен базовый URL (не только в макетах, но и в представлениях). Я использовал один и тот же помощник в модуле приложения по умолчанию и в модуле администратора (modules / admin /...). Локали, все прошло нормально, никаких проблем. Когда я загрузил проект, я получил такие ошибки, как:
An error occurred
Application error
Exception information:
Message: Plugin by name 'BaseURL' was not found in the registry; used paths: Cmsadmin_View_Helper_: /path_to_site_like_public_html/application/modules/cmsadmin/views/helpers/ Zend_View_Helper_: Zend/View/Helper/
Ошибка выше была для строки, использующей $this->baseURL() в макете администратора (который вызывается в модуле администратора).
Сначала я подумал, может быть, потому что помощник объявлен в другом модуле (модуль по умолчанию), он не найден фреймворком в модуле администратора. Но почему локально все работает? Я не понимаю Кроме того, если я изменю $this->baseURL() на $this->baseUrl() в том же файле макета admin.phtml, в модуле администратора все работает (онлайн и локально).
Если бы кто-то мог просветить меня до того, что я пропустил, я был бы признателен.
PS: Поскольку в моей голове еще не ясно, может быть, кто-то может сказать мне: помощник, объявленный в модуле, доступен во всех модулях сайта? (Локальная разработка сказала мне, что это так, поскольку он работает локально, но тогда что не так с загруженным проектом?).
Благодарю.
3 ответа
Проверь это
$ This-> BaseUrl('');
сохранение параметра равным нулю может решить проблему. Вы получите baseurl в макете, а также в default.php.
Заменить это:-
<script src="<?php echo $this->baseURL();?>/public/js/somejavascript.js></script>
с:
<script src="<?php echo $this->baseUrl();?>/public/js/somejavascript.js></script>
не:- всегда используйте $this->baseUrl();
его регистр чувствителен
Вам нужно добавить префикс к вашему помощнику вида Cmsadmin_View_Helper_
и не Zend_View_Helper_
как описано в сообщении об ошибке. Сообщение об ошибке сообщает, какие пути он ищет для различных префиксов.