文档
Welcome! 安装(Installation) 示例列表(List of examples) 依赖注入与服务定位器(Dependency Injection/Service Location) MVC 架构(The MVC Architecture) 使用控制器(Using Controllers) 使用模型(Working with Models) 模型元数据(Models Meta-Data) 事务管理(Model Transactions) Phalcon 查询语言(Phalcon Query Language (PHQL)) 缓存对象关系映射(Caching in the ORM) 对象文档映射 ODM (Object-Document Mapper) 使用视图(Using Views) 视图助手(View Helpers) 资源文件管理(Assets Management) Volt 模版引擎(Volt: Template Engine) MVC 应用(MVC Applications) 路由(Routing) 调度控制器(Dispatching Controllers) 微应用(Micro Applications) 使用命名空间(Working with Namespaces) 事件管理器(Events Manager) 请求环境 (Request Environment) 返回响应(Returning Responses) Cookie 管理(Cookies Management) 生成 URL 和 路径(Generating URLs and Paths) 闪存消息(Flashing Messages) 使用 Session 存储数据(Storing data in Session) 过滤与清理(Filtering and Sanitizing) 上下文编码(Contextual Escaping) 验证(Validation) 表单(Forms) 读取配置(Reading Configurations) 分页(Pagination) 使用缓存提高性能(Improving Performance with Cache) 安全(Security) 加密/解密( Encryption/Decryption ) 访问控制列表 ACL(Access Control Lists ACL) 多语言支持(Multi-lingual Support) 通用类加载器 ( Universal Class Loader ) 日志记录(Logging) 注释解析器(Annotations Parser) 命令行应用(Command Line Applications) 队列(Queueing) 数据库抽象层(Database Abstraction Layer) 国际化(Internationalization) 数据库迁移(Database Migrations) 调试应用程序(Debugging Applications) Phalcon 开发工具(Phalcon Developer Tools) 提高性能:下一步该做什么?(Increasing Performance: What's next?) 单元测试(Unit testing) 授权(License)
教程

发布于 2015-08-21 15:13:58 | 558 次阅读 | 评论: 0 | 来源: 网络整理

生成 URL 和 路径(Generating URLs and Paths)

PhalconMvcUrl is the component responsible of generate URLs in a Phalcon application. It’s capable of produce independent URLs based on routes.

PhalconMvcUrl 组件负责在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 PhalconMvcUrl;

$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 PhalconMvcUrl;

$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 PhalconMvcUrl;

$di->set('url', function () {
    $url = new Url();
    $url->setBaseUri('/invo/');
    return $url;
});

生成 URI(Generating URIs)

If you are using the Router 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

$route->add(
    "/blog/{year}/{month}/{title}",
    array(
        '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(
    array(
        '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 PhalconMvcUrl;

$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 PhalconMvcUrl;

$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 PhalconMvcRouter;

$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 PhalconMvcUrl;

$url = new Url();

// Dynamic URIs are
$url->setBaseUri('/');

// Static resources go through a CDN
$url->setStaticBaseUri('http://static.mywebsite.com/');

PhalconTag will request both dynamical and static URIs using this component.

自定义 URL 生成器(Implementing your own URL Generator)

The PhalconMvcUrlInterface interface must be implemented to create your own URL generator replacing the one provided by Phalcon.

最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务