Zend Framework → Аналог Url-хелпера из Zend_View
В своё время меня интересовал вопрос - как вызывать Url-хелпер из контроллера и внутри модели? И если в контроллере это можно было сделать просто, то внутри модели получал только фигу. Однако догадался заглянуть в код самого фреймворка (Zend Framework, если что) - там всё чёрным по белому написано.
Зачем мне вообще это понадобилось? А затем, что пути к страницам этого сайта определены через роуты и если мне завтра вздумается заменить адреса вида example.org/topic/xxx на example.org/shmopic/xxx, то придётся переписывать модели для получения RSS-фида и генерации sitemap.xml, что не есть хорошо.
А теперь немного кода
Было:
public static function createSitemap() { $baseUrl = 'http://' . $_SERVER['HTTP_HOST']; //...кучка кода foreach ($arrayTopic as $value) { $url = $baseUrl . '/topic/' . $value['post_id']; //...другая кучка кода } //...третья кучка кода }
Стало:
public static function createSitemap() { $baseUrl = 'http://' . $_SERVER['HTTP_HOST']; $router = Zend_Controller_Front::getInstance()->getRouter(); //...кучка кода foreach ($arrayTopic as $value) { $url = $baseUrl . $router->assemble(array('id' => $value['post_id']), 'topic', false, true); //...другая кучка кода } //...третья кучка кода }
Вот, собственно, и всё :)
Адрес электронной почты нигде не отображается, необходим только для обратной связи.
Веб-сайт вводите в формате http://example.org, при желании, конечно.