URL生成

2021-09-27 10:59:22
admin
559
最后编辑:admin 于 2022-05-19 10:57:57

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地址。唯一参数表示是否带有配置文件中定义的 $config->webroot 值,比如/,默认为 false。

调用示例:

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

PATH_INFO 模式下显示效果:/index.php?m=blog&f=index

GET 模式下显示效果:/blog.html

获取 webRoot

框架还单独定义了一个 getWebRoot() 函数,用来获取应用的网址。

注意:此函数不同于 router 类中的 getWebRoot() 方法。前者是独立的,与配置文件无关,其唯一参数表示是否带有域名,默认为 false,即输出 / 。后者获取的是配置文件中定义的 $config->webroot 值。

发表评论
评论通过审核后显示。