URL生成

2021-09-27 10:59:22
admin
1682
最后编辑:admin 于 2022-08-06 12:34:40

zentaoPHP 框架中生成链接的时候,尽量不要手工拼写链接,通过调用系统提供的 createLink 、inlink 方法,来生成链接。

$this->createLink()方法

在 control 基类里定义了一个 createLink 方法,用来生成一个访问指定模块和方法的连接。

createLink($moduleName, $methodName, $vars)

这三个参数均为字符串类型,分别为目标地址的 模块名、方法名、参数。

  • 第一个参数是模块名称;

  • 第二个参数是方法名;

  • 第三个参数是参数,使用 key1=value1&key2=value2 这种方式来进行传参。

比如,我们要生成一个 blog 模块的view方法的链接,需要传递参数为 id=17,这样来调用:

echo $this->createLink('blog', 'view', 'id=17&cat=123')

如果运行方式为 PATH_INFO,这样会生成 blog/view/17/123.html 这样的链接。

如果运行方式为 GET,则生成 ?m=blog&f=view&id=17&cat=123&t=html 的链接。

$this->inlink()方法

如果是要生成一个当前模块下的链接,可以直接使用 $this->inlink() 方法, 用法与上面类似,只是省略了第一个指定模块的参数而已。

echo $this->inlink('view', 'id=17&cat=123')

helper::createLink()方法

$this->createLink() 方法,是可以在 control 和 view 里面直接调用的。如果需要在其他地方调用,则可以使用 helper::createLink(),参数是一样的。

获取页面 URL

在 router(应用对象)中定义了一个 getURI() 方法,用来获取页面 URL地址。参数 $full 是布尔值,表示是否显示 url 根目录以及视图类型,默认为 false。 

调用示例:

echo $this->app->getURI(true);

以本页面 PATH_INFO 模式为例:

参数 false:book/zentaophp/102

参数 true:/book/zentaophp/102.html 

获取 webRoot

框架核心文件 helper 和 router 分别都定义了一个 getWebRoot() 函数方法。

helper 中的 getWebRoot() 工具函数:

此函数是独立的,与配置文件无关,其唯一参数表示是否获取域名网址,默认为 false。返回值示例:

参数 false:/

参数 true:http://www.zentaophp.com/

router 中的 getWebRoot() 成员方法:

此方法获取的是 URL 根目录,取自配置文件中设置的 $config->webroot 值。