如何从页面uid创建页面URL

7 typo3 extbase

我正在开发一个typo3扩展,我想从页面ID生成一个url.目前我通过追加index.php?id=ID来创建网址$GLOBALS['TSFE']->baseURL.

有没有其他方法可以从页面ID创建一个可读的URL,如果是,它是如何做到的?

lor*_*enz 13

由于Extbase控制器有一个UriBuilder对象,你应该使用它:

$uri = $this->uriBuilder->reset()
    ->setTargetPageUid($pageUid)
    ->setCreateAbsoluteUri(TRUE)
    ->build();
Run Code Online (Sandbox Code Playgroud)

如果需要,还可以设置参数数组:

$arguments = array(
    array('tx_myext_myplugin' =>
        array(
            'article' => $articleUid,
        )
    )
);
Run Code Online (Sandbox Code Playgroud)

或者,如果您不需要扩展名前缀:

$arguments = array(
    'logintype' => 'login'
);
Run Code Online (Sandbox Code Playgroud)

(当然你可以混合两种变体.)

然后使用:

$uri = $this->uriBuilder->reset()
    ->setTargetPageUid($pageUid)
    ->setCreateAbsoluteUri(TRUE)
    ->setArguments($arguments)
    ->build();
Run Code Online (Sandbox Code Playgroud)

  • 像什么?也许你的意思是我已经用论证描述过的东西.上面的例子将创建一个带有``&tx_myext_myplugin [article] = 999```的URI. (2认同)

cwe*_*ske 6

如果您不在extbase控制器上下文中,则可以使用标准TYPO3功能:

$url = $GLOBALS['TSFE']->cObj->typoLink_URL(
    array(
        'parameter' => $pageUid,
        'forceAbsoluteUrl' => true,
    )
);
Run Code Online (Sandbox Code Playgroud)