我尝试将搜索结果返回到新控制器,而不是执行搜索操作的位置。问题Results
永远无法从CustomSearchResultPage.ss
访问。我已经为我认为正在发生的事情添加了内联评论,我在这里思考的是正确的吗?
// Customise content with results
$response = $this->customise(array(
'Results' => $results ? $results->getResults() : '',
));
if ($results) {
$response = $response->customise($results);
}
// Use CustomSearchResultPage.ss template
$templates = array('CustomSearchResultPage', 'Page');
// Create a new CustomSearchResultPage page
$page = CustomSearchResultPage::get_one('CustomSearchResultPage');
// Build a controller using the CustomSearchResultPage
$controller = CustomSearchResultPage_Controller::create($page);
// Add the custom data to the newly minted controller
$result = $controller->customise($response);
// Return the controller and tell it how to render
return $result->renderWith($templates);
页面似乎按预期呈现,只是变量总是空的......
答案 0 :(得分:0)
我担心你的解释有点难以理解。所以我正在回答我可以确定如下:
您只需在步骤4停止(跳过步骤3),然后返回自定义($ response)。
如果有某种原因你认为你需要另一个控制器(这似乎是超级的,但谁知道),在返回它之前创建然后自定义那个(仅)将会更好。
由于您只使用了第二个控制器来渲染结果,因此URL不会发生任何变化。整件事似乎超出了要求。
从这个动作渲染结果的一种更简单的方法可能是:
return $this
->customise(['Results' => $results ? $results->getResults() : null])
->renderWith(['CustomSearchResultPage', 'Page']);
(从我的头顶,可能需要一点精炼)。