Zend Framework → Аналог Url-хелпера из Zend_View
В своё время меня интересовал вопрос - как вызывать Url-хелпер из контроллера и внутри модели? И если в контроллере это можно было сделать просто, то внутри модели получал только фигу. Однако догадался заглянуть в код самого фреймворка (Zend Framework, если что) - там всё чёрным по белому написано.
Зачем мне вообще это понадобилось? А затем, что пути к страницам этого сайта определены через роуты и если мне завтра вздумается заменить адреса вида example.org/topic/xxx на example.org/shmopic/xxx, то придётся переписывать модели для получения RSS-фида и генерации sitemap.xml, что не есть хорошо.
А теперь немного кода
Было:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php
public static function createSitemap()
{
$baseUrl = 'http://' . $_SERVER['HTTP_HOST'];
//...кучка кода
foreach ($arrayTopic as $value) {
$url = $baseUrl . '/topic/' . $value['post_id'];
//...другая кучка кода
}
//...третья кучка кода
}
|
Стало:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php
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
);
//...другая кучка кода
}
//...третья кучка кода
}
|
Вот, собственно, и всё :)
Комментарии