# 生成 URL 和 路徑(Generating URLs and Paths)
[Phalcon\\Mvc\\Url](http://docs.iphalcon.cn/api/Phalcon_Mvc_Url.html)is the component responsible of generate URLs in a Phalcon application. It’s capable of produce independent URLs based on routes.
[Phalcon\\Mvc\\Url](http://docs.iphalcon.cn/api/Phalcon_Mvc_Url.html)組件負責在Phalcon應用內生成URL。它依賴路由生成獨立的URL。
## 設置站點基地址(Setting a base URI)
Depending of which directory of your document root your application is installed, it may have a base URI or not.
For example, if your document root is /var/www/htdocs and your application is installed in /var/www/htdocs/invo then your baseUri will be /invo/. If you are using a VirtualHost or your application is installed on the document root, then your baseUri is /. Execute the following code to know the base URI detected by Phalcon:
~~~
<?php
use Phalcon\Mvc\Url;
$url = new Url();
echo $url->getBaseUri();
~~~
By default, Phalcon automatically may detect your baseUri, but if you want to increase the performance of your application is recommended setting up it manually:
~~~
<?php
use Phalcon\Mvc\Url;
$url = new Url();
// Setting a relative base URI
$url->setBaseUri("/invo/");
// Setting a full domain as base URI
$url->setBaseUri("//my.domain.com/");
// Setting a full domain as base URI
$url->setBaseUri("http://my.domain.com/my-app/");
~~~
Usually, this component must be registered in the Dependency Injector container, so you can set up it there:
~~~
<?php
use Phalcon\Mvc\Url;
$di->set(
"url",
function () {
$url = new Url();
$url->setBaseUri("/invo/");
return $url;
}
);
~~~
## 生成 URI(Generating URIs)
If you are using the[Router](http://docs.iphalcon.cn/reference/routing.html)with its default behavior. Your application is able to match routes based on the following pattern: /:controller/:action/:params. Accordingly it is easy to create routes that satisfy that pattern (or any other pattern defined in the router) passing a string to the method “get”:
~~~
<?php echo $url->get("products/save"); ?>
~~~
Note that isn’t necessary to prepend the base URI. If you have named routes you can easily change it creating it dynamically. For Example if you have the following route:
~~~
<?php
$router->add(
"/blog/{year}/{month}/{title}",
[
"controller" => "posts",
"action" => "show",
]
)->setName("show-post");
~~~
A URL can be generated in the following way:
~~~
<?php
// This produces: /blog/2015/01/some-blog-post
$url->get(
[
"for" => "show-post",
"year" => "2015",
"month" => "01",
"title" => "some-blog-post",
]
);
~~~
## 沒有偽靜態狀態下的生成 URL(Producing URLs without mod\_rewrite)
You can use this component also to create URLs without mod\_rewrite:
~~~
<?php
use Phalcon\Mvc\Url;
$url = new 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");
~~~
You can also use`$_SERVER["REQUEST_URI"]`:
~~~
<?php
use Phalcon\Mvc\Url;
$url = new Url();
// Pass the URI in $_GET["_url"]
$url->setBaseUri("/invo/index.php?_url=/");
// Pass the URI using $_SERVER["REQUEST_URI"]
$url->setBaseUri("/invo/index.php/");
~~~
In this case, it’s necessary to manually handle the required URI in the Router:
~~~
<?php
use Phalcon\Mvc\Router;
$router = new Router();
// ... Define routes
$uri = str_replace($_SERVER["SCRIPT_NAME"], "", $_SERVER["REQUEST_URI"]);
$router->handle($uri);
~~~
The produced routes would look like:
~~~
<?php
// This produce: /invo/index.php/products/save
echo $url->get("products/save");
~~~
## Volt 中生成 URL(Volt Producing URLs from Volt)
The function “url” is available in volt to generate URLs using this component:
~~~
<a href="{{ url("posts/edit/1002") }}">Edit</a>
~~~
Generate static routes:
~~~
<link rel="stylesheet" href="{{ static_url("css/style.css") }}" type="text/css" />
~~~
## 靜態 URI 與 動態 URI(Static vs. Dynamic URIs)
This component allow you to set up a different base URI for static resources in the application:
~~~
<?php
use Phalcon\Mvc\Url;
$url = new Url();
// Dynamic URIs are
$url->setBaseUri("/");
// Static resources go through a CDN
$url->setStaticBaseUri("http://static.mywebsite.com/");
~~~
[Phalcon\\Tag](http://docs.iphalcon.cn/reference/tags.html)will request both dynamical and static URIs using this component.
## 自定義 URL 生成器(Implementing your own URL Generator)
The[Phalcon\\Mvc\\UrlInterface](http://docs.iphalcon.cn/api/Phalcon_Mvc_UrlInterface.html)interface must be implemented to create your own URL generator replacing the one provided by Phalcon.
- 簡介
- 安裝
- 安裝(installlation)
- XAMPP下的安裝
- WAMP下安裝
- Nginx安裝說明
- Apache安裝說明
- Cherokee 安裝說明
- 使用 PHP 內置 web 服務器
- Phalcon 開發工具
- Linux 系統下使用 Phalcon 開發工具
- Mac OS X 系統下使用 Phalcon 開發工具
- Windows 系統下使用 Phalcon 開發工具
- 教程
- 教程 1:讓我們通過例子來學習
- 教程 2:INVO簡介
- 教程 3: 保護INVO
- 教程4: 使用CRUD
- 教程5: 定制INVO
- 教程 6: V?kuró
- 教程 7:創建簡單的 REST API
- 組件
- 依賴注入與服務定位器
- MVC架構
- 使用控制器
- 使用模型
- 模型關系
- 事件與事件管理器
- Behaviors
- 模型元數據
- 事務管理
- 驗證數據完整性
- Workingwith Models
- Phalcon查詢語言
- 緩存對象關系映射
- 對象文檔映射 ODM
- 使用視圖
- 視圖助手
- 資源文件管理
- Volt 模版引擎
- MVC 應用
- 路由
- 調度控制器
- Micro Applications
- 使用命名空間
- 事件管理器
- Request Environmen
- 返回響應
- Cookie 管理
- 生成 URL 和 路徑
- 閃存消息
- 使用 Session 存儲數據
- 過濾與清理
- 上下文編碼
- 驗證Validation
- 表單_Forms
- 讀取配置
- 分頁 Pagination
- 使用緩存提高性能
- 安全
- 加密與解密 Encryption/Decryption
- 訪問控制列表
- 多語言支持
- 類加載器 Class Autoloader
- 日志記錄_Logging
- 注釋解析器 Annotations Parser
- 命令行應用 Command Line Applications
- Images
- 隊列 Queueing
- 數據庫抽象層
- 國際化
- 數據庫遷移
- 調試應用程序
- 單元測試
- 進階技巧與延伸閱讀
- 提高性能:下一步該做什么?
- Dependency Injection Explained
- Understanding How Phalcon Applications Work
- Api
- Abstract class Phalcon\Acl