/** * Executes index action * * @param sfRequest $request A request object */ public function executeIndex(sfWebRequest $request) { $this->getContext()->getConfiguration()->loadHelpers(array('Url')); $feed = new sfAtom1Feed(); $feed->setTitle('日本Symfonyユーザー会 コンテンツ更新情報'); $feed->setLink($this->getController()->genUrl('@homepage')); $feed->setAuthorEmail('*****@*****.**'); $feed->setAuthorName('日本Symfonyユーザー会'); $feedImage = new sfFeedImage(); $feedImage->setFavicon(public_path('images/favicon.ico')); $pages = Doctrine_Query::create()->from('Page p')->limit(10)->orderBy('p.last_updated desc')->execute(); foreach ($pages as $page) { $item = new sfFeedItem(); $item->setTitle($page->getTitle()); $item->setLink(url_for_page($page->getPath())); $item->setPubdate($page->getDateTimeObject('last_updated')->format('U')); $item->setDescription(strip_tags($page->getContentRendered())); $item->setContent($page->getContentRendered()); $feed->addItem($item); } $this->feed = $feed; }
return '==TOKEN=='; } } sfForm::enableCSRFProtection(); $context = sfContext::getInstance(array('controller' => 'myController', 'request' => 'myRequest')); $t = new lime_test(25); // url_for_page() $t->diag('url_for_page()'); $t->is(url_for_page('/test'), '/module/action/test', '第1階層ページ名'); $t->is(url_for_page('test'), '/module/action/test', '第1階層、先頭のスラッシュは自動付与'); $t->is(url_for_page(''), '/module/action/', '空の場合はトップURL(スラッシュ付)'); $t->is(url_for_page('/'), '/module/action/', 'ルート'); $t->is(url_for_page('/test/'), '/module/action/test/', '第1階層 末尾スラッシュ'); $t->is(url_for_page('/test/foo'), '/module/action/test/foo', '第2階層ページ名'); $t->is(url_for_page('/test/foo/'), '/module/action/test/foo/', '第2階層スラッシュ付'); $t->is(url_for_page('/test//foo'), '/module/action/test/foo', '途中の連続スラッシュは自動削除'); // link_to_page() $t->diag('link_to_page() URL生成部分はurl_for_page()に依存'); $t->is(link_to_page('foo', '/test'), '<a href="/module/action/test">foo</a>', '第1階層ページ名'); $t->is(link_to_page('foo', '/test/foo'), '<a href="/module/action/test/foo">foo</a>', '第2階層ページ名'); $t->is(link_to_page('foo', '/test/foo/'), '<a href="/module/action/test/foo/">foo</a>', '第2階層スラッシュ付'); $t->is(link_to_page('foo', '/test//foo'), '<a href="/module/action/test/foo">foo</a>', '途中の連続スラッシュは自動削除'); $t->is(link_to_page('foo', '/test', array('class' => 'bar')), '<a class="bar" href="/module/action/test">foo</a>', 'link_toのオプションはそのまま有効'); // link_to_option_selectable() $t->diag('link_to_option_selectable() リンクタグ生成はlink_to_page()に依存'); $test_function_true = function ($param) { return true; }; $test_function_false = function ($param) { return false; };
/** * link_to_page() * 特定のページ(パス)に対応するURLでリンクタグを生成する * * @param string $text リンクを設定する文字列 * @param string $page_path リンク先ページのパス * @param array $default_options link_to()ヘルパーへのオプション配列 * @return string リンクタグ */ function link_to_page($text, $page_path, $default_options = array()) { $url = url_for_page($page_path); return link_to($text, $url, $default_options); }