2013-03-04 2 views
0

Цель: Я хочу знать, если это возможно, чтобы определить, является ли локальный хост или хост моего развития сайта в одном месте в Zend Framework и использовать это определение всей остальной сайт через переменную сеанса.где использовать gethostname в Zend

Подробнее: Я работаю над сайтом с небольшой группой людей. Мы используем инструменты svn для объединения нашего кода и тестирования на локальном хосте перед перемещением изменений и дополнений на сервер разработки. Поскольку один и тот же код используется на каждой платформе, мы используем gethostname() в php, чтобы определить, обращаемся ли мы к нашему сайту через localhost или сервер. Нам это нужно, поэтому мы можем правильно установить пути к файлам (http://localhost/images/dog.jpg vs https://mysite.com/images/dog.jpg). Первоначально, каждый раз, когда это входило в игру, мы устанавливали переменную $ host в контроллере public function init(), который содержал соответствующую строку для использования на этой странице. Затем мы переключились на перенос $ host в переменную сеанса, что значительно уменьшило количество избыточного кода. Но я уверен, что есть способ установить это в в одном месте и покончить с этим, но я не знаю, где это место (в рамках Zend). Целевая страница индекса не работает, потому что пользователи, скорее всего, войдут из других мест. Мое лучшее предположение заключалось в установке его в макете, но это дает мне ошибки, потому что код макета слишком поздно запускает процесс загрузки страницы. Есть ли лучшее место для определения хозяина? Есть ли способ расставить приоритеты внутри кода макета, чтобы он каким-то образом выполнялся до того, как он понадобился на странице?

Код:

if(!isset($_SESSION['hostname'])){ 
    $hostname = gethostname(); 
    if ($hostname == 'prodserver') { 
    $_SESSION['hostname'] = 'https://mysite.com'; 
    } else { 
    $_SESSION['hostname'] = 'http://localhost'; 
    } 
} 

Наш текущий метод работает просто отлично, но я не могу избавиться от ощущения, что должно быть лучше! Если вы это знаете - я бы хотел это услышать. Благодаря!

+1

Почему вы добавляете имя хоста в сгенерированный URL-адрес в первую очередь? – prodigitalson

+0

Таким образом, мы можем выполнять вызовы полного пути. (Эта часть не была моим решением.) – lostphilosopher

+2

Просто используйте абсолютные пути, т. Е. Путь, начинающийся с '/'. Нет причин включать имя хоста во внутренние ссылки, это просто добавляет сложности. –

ответ

2

Чтобы ответить на вопрос в вашем комментарии, нет, переменные сеанса по определению зависят от пользователя. Однако ZF (по соглашению) устанавливает константу APPLICATION_ENV, которая может использоваться для выполнения проверок среды. Вы также можете установить переменные (включая baseUrl) через. application.ini, как бы вы решали проблему в своем вопросе, если вам нужно.

+0

Ах! application.ini имеет смысл. Спасибо. – lostphilosopher

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