Zend Framework $ this-> baseUrl () всегда возвращает текущую страницу :( почему

ознакомьтесь с этим сайтом www.fltdata.com. По какой-то причине домашняя ссылка независимо от того, на какой странице вы идете, а не на домашнюю страницу, указывает на текущую страницу. Он отлично работает на моем локальном хосте, но в режиме онлайн он ведет себя так. Значение href для домашней ссылки: $ this-> baseUrl ()

Что здесь не так.

=== EDIT ===

Ну, я создал помощника, который находится ниже:

class Zend_View_Helper_BaseUrl { protected $_baseUrl; function __construct() { $fc = Zend_Controller_Front::getInstance(); $this->_baseUrl = $fc->getBaseUrl(); } function baseUrl() { return $this->_baseUrl; } } 

И это я догадываюсь, что вызывается всякий раз, когда я вызываю $ this-> baseUrl. Это может быть проблема, однако она работает нормально в моем локальном хосте, а не в сети, поэтому – должна быть какая-то проблема с конфигурацией – где я должен смотреть?

Related of "Zend Framework $ this-> baseUrl () всегда возвращает текущую страницу :( почему"

Трудно сказать, что здесь не так, не зная подробностей о настройке ZF и настройке URL-переписывания. Логика Zend_Controller_Request_Http::getBaseUrl() – это то, где ваш вызов Zend_View_Helper_BaseUrl::baseUrl() будет запрошен, если baseUrl не установлен явно в фронт-контроллере – довольно сложный и включает в себя 4 разных переменных сервера (и еще несколько в процессе определения URI текущего запроса).

Проще всего решить эту проблему, возможно, было бы установить baseUrl (относительно корня сервера) на фронт-контроллере в вашем бутстрапе. Если вы используете новый Zend_Application -bootstrapping, вам просто нужно добавить

 resources.frontController.baseUrl = "/subdir" 

к вашей конфигурации.

РЕДАКТИРОВАТЬ

Ваш помощник более или менее похож на оригинальный baseUrl -helper, поставляемый с ZF. Исходный также прокси- Zend_Controller_Front::getBaseUrl() . Какую версию ZF вы используете? Есть ли причина, почему вы не используете отправленный baseUrl -helper?

Вы пытались установить baseUrl в своей начальной загрузке?

Обычно я использую объект конфигурации для базового url, а затем определяю его в index.php в public / index.php

  $config = new Zend_Config_Ini( APPLICATION_PATH . '/configs/application.ini', APPLICATION_ENV); $baseUrl = $config->baseHttp; define('BASE_URL', $baseUrl);` 

в configs / application.ini у меня это в разделе производства

 [production] baseHttp = "http://whatever.net" 

Таким образом, если мне когда-либо понадобится использовать другой базовый url в разработке, я мог бы просто добавить различную переменную для baseHttp лично, я думаю, если вы хотите, чтобы baseurl не был запутан, это более простой подход, чем обертывание в своем классе. Иногда ООП слишком много ООП. Кроме того, это упростило бы установку программы установки. Вы даже можете получить переменную $ _SERVER, чтобы получить имя хоста и обернуть ее с помощью http: //

Zend Framework всегда возвращает текущую страницу, потому что вы не используете конечную косую черту после вызова $ this-> baseUrl (); ,

Чтобы решить проблему, добавьте конечную косую черту после вызова $ this-> baseUrl (); на ваш взгляд, вот так:


Правильный путь

 <a href="<?php echo $this->baseUrl() . "/"; ?>">Home Link</a> 

или

 <a href="<?php echo $this->baseUrl(); ?>/">Home Link</a> 

Опускание конечной косой черты приводит к ссылке на страницу, которую вы просматриваете в данный момент.

Неправильный путь

 <a href="<?php echo $this->baseUrl(); ?>">Home Link</a> 

У меня была аналогичная проблема при использовании $ this-> baseUrl на мой взгляд. Я нашел, что использование этого даст мне URL-адрес текущей страницы:

BaseUrl; ?> "> http://www.yourwebaddress.com/current-page

и это даст мне реальный baseurl независимо от текущей страницы (обратите внимание, что слэш добавлен в конец URL-адреса)

BaseUrl; ?> / "> http://www.yourwebaddress.com/