Zend View Helper странная проблема - PullRequest
0 голосов
/ 22 июля 2010

Я работал над проектом 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 ]

1 голос
/ 21 мая 2012

отметьте это

$ this-> baseUrl ('');

Сохранение нулевого параметра может решить проблемуВы получите baseurl в макете, а также в default.php.

0 голосов
/ 19 октября 2015

Заменить это: -

<script src="<?php echo $this->baseURL();?>/public/js/somejavascript.js></script>

с:

<script src="<?php echo $this->baseUrl();?>/public/js/somejavascript.js></script>

нет: - Всегда используйте $this->baseUrl(); чувствителен к регистру

0 голосов
/ 22 июля 2010

Вам нужно поставить префикс вашего помощника с Cmsadmin_View_Helper_, а не Zend_View_Helper_, как описано в сообщении об ошибке. Сообщение об ошибке сообщает, какие пути он ищет для различных префиксов.

...