Generating URLs and Paths ========================= 在Phalcon应用程åºä¸ï¼Œä½¿ç”¨ :doc:`Phalcon\\Mvc\\Url <../api/Phalcon_Mvc_Url>` 组件生æˆURL。它能够生æˆåŸºäºŽè·¯ç”±çš„独立的URL。 Setting a base URI ------------------ æ ¹æ®ä½ 的应用程åºå®‰è£…到主机文档目录的ä½ç½®ï¼Œä½ 的应用程åºURIå¯èƒ½ä¼šå‡ºçŽ°ä¸€ä¸ªåŸºç¡€çš„URI。 ä¾‹å¦‚ï¼Œå¦‚æžœä½ çš„ä¸»æœºæ–‡æ¡£ç›®å½•æ˜¯ /var/www/htdocsï¼Œè€Œä½ çš„åº”ç”¨ç¨‹åºå®‰è£…到 /var/www/htdocs/invo,那么基础URIå³ä¸º /invo/.å¦‚æžœä½ ä½¿ç”¨è™šæ‹Ÿä¸»æœºçš„å½¢å¼å®‰è£…æ¤åº”用,那么baseUriå³ä¸º /. 执行以下代ç ï¼Œä½ å¯ä»¥æ£€æµ‹ä½ 的应用程åºçš„baseUri. .. code-block:: php <?php $url = new Phalcon\Mvc\Url(); echo $url->getBaseUri(); 默认情况下,Phalcon 会自动检测应用程åºçš„baseUri.ä½†å¦‚æžœä½ æƒ³æé«˜åº”ç”¨ç¨‹åºæ€§èƒ½çš„è¯ï¼Œæœ€å¥½è¿˜æ˜¯æ‰‹å·¥è®¾ç½®ï¼š .. code-block:: php <?php $url = new Phalcon\Mvc\Url(); $url->setBaseUri('/invo/'); 通常情况下,æ¤ç»„件必须被注册到æœåС容噍ä¸ï¼Œå› æ¤ä½ å¯ä»¥ç›´æŽ¥è¿™æ ·è®¾ç½®å®ƒï¼š .. code-block:: php <?php $di->set('url', function(){ $url = new Phalcon\Mvc\Url(); $url->setBaseUri('/invo/'); return $url; }); Generating URIs --------------- å¦‚æžœä½ ä½¿ç”¨çš„æ˜¯ :doc:`Router <routing>` çš„é»˜è®¤è¡Œä¸ºã€‚ä½ çš„åº”ç”¨ç¨‹åºä¼šåŒ¹é…è·¯ç”±æ¨¡å¼ : /:controller/:action/:params. å› æ¤ï¼Œå¾ˆå®¹æ˜“通过"get"方法得到: .. code-block:: php <?php echo $url->get("products/save") ?> 请注æ„,预先设置baseUri并䏿˜¯å¿…é¡»çš„ã€‚å¦‚æžœä½ å·²ç»é€šè¿‡è®¾ç½®è·¯ç”±å‘½åï¼Œä½ å¯ä»¥å¾ˆå®¹æ˜“改å˜å®ƒã€‚ä¾‹å¦‚ï¼Œä½ æœ‰ä»¥ä¸‹é€”å¾„ï¼š .. code-block:: php <?php $route->add('/blog/{$year}/{month}/{title}', array( 'controller' => 'posts', 'action' => 'show' ))->setName('show-post'); 生æˆURL还å¯ä»¥é€šè¿‡ä»¥ä¸‹æ–¹å¼ï¼š .. code-block:: php <?php //This produces: /blog/2012/01/some-blog-post $url->get(array( 'for' => 'show-post', 'year' => 2012, 'month' => '01', 'title' => 'some-blog-post' )); Producing URLs without Mod-Rewrite ---------------------------------- ä½ è¿˜å¯ä»¥ä½¿ç”¨æ¤ç»„件在ä¸ä½¿ç”¨é‡å†™è§„则的情况下创建URL: .. code-block:: php <?php $url = new Phalcon\Mvc\Url(); //Pass the URI in $_GET["_url"] $url->setBaseUri('/invo/index.php?_url=/'); //This produce: /invo/index.php?_url=/products/save echo $url->get("products/save"); ä½ ä¹Ÿå¯ä»¥ä½¿ç”¨ $_SERVER["REQUEST_URI"]: .. code-block:: php <?php $url = new Phalcon\Mvc\Url(); //Pass the URI using $_SERVER["REQUEST_URI"] $url->setBaseUri('/invo/index.php?_url=/'); //Pass the URI in $_GET["_url"] $url->setBaseUri('/invo/index.php/'); åœ¨è¿™ç§æƒ…å†µä¸‹ï¼Œä½ å¿…é¡»æ‰‹å·¥å¤„ç†è·¯ç”±ä¸çš„URI: .. code-block:: php <?php $router = new Phalcon\Mvc\Router(); // ... define routes $uri = str_replace($_SERVER["SCRIPT_NAME"], '', $_SERVER["REQUEST_URI"]); $router->handle($uri); 产生的路由看起æ¥åƒè¿™æ ·ï¼š .. code-block:: php <?php //This produce: /invo/index.php/products/save echo $url->get("products/save"); Implementing your own Url Generator ----------------------------------- The :doc:`Phalcon\\Mvc\\UrlInterface <../api/Phalcon_Mvc_UrlInterface>` interface must be implemented to create your own URL generator replacing the one providing by Phalcon.