URI


在CP中, 你可以为每个app指定URI风格, 包括后缀, 控制器方法之间的连接符等

生成URL

在CP中, 你可以在视图控制器或模板中使用$this->url()来生成URL

1. 普通URL

生成普通的url方法如下:

$this->url('控制器:方法', array('参数名'=>'参数值'))

2. 参数加密URL

你还可以对参数进行加密

$this->sUrl('控制器:方法', array('参数名'=>'参数值'))

你可以在对应的控制器中调用

$this->sParams()

来解密参数

指定生成URL的风格

在CP中支持五种风格的URL, 你可以通过APP配置文件来指定生成URL的样式

'url' => array(

    /**
     * 默认调用的控制器和方法
     */
    '*' => 'Main:index',
    /**
     * QUERY_STRING 方式
     *  1 简短的url(不包含参数名,需要在方法注释中使用@cp_params key...来手动指定参数的名字)
     *    生成的url类似 /?/controller/action/bar
     *  3 友好的url形式 /?/controller/action/foo/bar...
     * PATH_INFO 方式
     *  2 原生的参数形式: /index.php/controller/action?foo=bar
     *  4 友好的参数形式: /index.php/controller/action/foo/bar...
     *  5 PATH_INFO 下的简短形式
     */
    'type' => 3,
    /**
     * 服务器是否已经开启rewrite支持
     */
    'rewrite' => false,
    /**
     * url请求中的连接字符(controller/action/params)之间的/
     */
    'dot' => '/',
    /**
     * url后缀
     */
    'ext' => '',
    /**
     * 索引文件名称
     */
    'index' => 'index.php'
),

通过配置中的type项, 你可以自定义生成URL的各种样式, 框架会根据配置自动更新生成的URL

用注释配置来还原参数名称

type的值为15的时候, 生成URL时会直接抛弃参数名称, 所以生成的URL更短, 此时我们需要在类对应的方法中使用注释配置来还原参数名称, 假设我们在模板中生成URL的调用如下:

$this->url('help:index', array('alias' => 'jobs'));

我们生成的RUL如下:

http://domain.com/help/index/jobs

此时help控制器的index方法定义如下:

namespace app\web\controllers;

class Help extends Web
{

    /**
     * 帮助中心
     *
     * @cp_params alias
     * @throws \Cross\Exception\CoreException
     */
    function index()
    {
        print_r($this->params['alias']); 
    }
}

我们在方法体的注释中使用@cp_params 参数名来还原参数的名称, 在方法内部依然使用$this->params['alias']来获取参数的值.

>注释配置中的参数名, 应该和生成URL时的参数名保持一致

关于注释配置的更多用法, 参考控制器/使用注释配置一节