带有GET参数的RealURL

时间:2015-12-14 05:57:45

标签: typo3 realurl

我们开发了一个搜索卡车的typo3插件。出于搜索引擎优化的原因,我们尝试使用realURL插件来使URL更友好。

在首页,我们有几个调用链接到搜索页面的操作,其中包含某些搜索参数。下面是一个例子:

/search-results/?tx_fds_searchresults[type_name]=Trailer

此链接按预期工作。在结果页面上是指向列表页面的链接,其中包含更多详细信息。下面是一个例子:

/listing/?tx_fds_listing[id]=119870

此链接无效。传递给插件控制器的参数中没有填充tx_fds_listing[id]

起初我们认为它可能是一个配置问题,但同样,它并没有出现在其他页面上。 该ID不是数据库对象,而是可以是文本字符串。

编辑:

我应该补充说,它可以在关闭RealURL的情况下正常工作。

我们将ID设为$id = $this->request->getArgument('id');

编辑2: 以下是日志中的错误消息。 [ALERT] request="28233e225150a" component="TYPO3.CMS.Frontend.ContentObject.Exception.ProductionExceptionHandler": Oops, an error occurred! Code: 201512141630381db91bba - {"exception":"exception 'TYPO3\\CMS\\Extbase\\Mvc\\Exception\\NoSuchArgumentException' with message 'An argument \"id\" does not exist for this request.'

我也尝试将变量重命名为name,但这也不起作用。

1 个答案:

答案 0 :(得分:0)

我有一个解决方案可以解决问题的根本原因,如果不是特定的问题。

所以我不得不在realurl_conf.php文件中添加额外的映射。例如,获取列表ID:

$config['domain.com']['postVarSets'][3]['stock'] = array(array('GETvar' => 'tx_fds_listing[id]'));

这会产生有效的网址:

/listing/stock/119870

这是该插件的预期用途,因此这是一个很好的结果。我还添加了ajax和pdfs的配置。这需要修改不明显的typoscript。

PDF TS:

pdf = PAGE
pdf {
    typeNum = 300
    10 = USER_INT
    10 {
        userFunc      = TYPO3\CMS\Extbase\Core\Bootstrap->run
        #vendorName    = TYPO3
        extensionName = Fds
        pluginName = Listing

        #controller = FDS
        controller = Tx_Fds_Controller_FDSController
        #action = listingPdf
        switchableControllerActions.FDS.1 = listingPdf


    }
    config {
        disableAllHeaderCode = 1
        additionalHeaders = Content-type:application/pdf
        xhtml_cleaning = 0
        admPanel = 0
    }
}

PDF RealURL配置:

$config['domain.com']['postVarSets'][3]['pdf'] = array('type' => 'single', 'keyValues' => array ('type' => 300));

PDF有效网址:

/listing/pdf/stock/119870