【发布时间】:2018-04-06 00:09:10
【问题描述】:
我想在模式中显示默认的 SilverStripe 站点搜索框,然后在提交表单时希望以相同的模式显示搜索结果,而不是显示在页面上。 default search on front end 我正在遵循创建页面类型的方法...
AjaxFormPage extends Page {}
class AjaxFormPage_Controller extends Page_Controller {}
1) 在这里我做了init方法来加载jQuery。
2) 创建表单(基本上是来自ContentControllerSearchExtension 类的相同搜索表单并粘贴到此处。
3) 还从ContentControllerSearchExtension 复制了结果函数,如下所示:
public function resultsAjax($data, $form, $request) {
//$this->request->isAjax()
//Director::is_ajax()
if (Director::is_ajax()) {
$data = array(
'Results' => $form->getResults(),
'Query' => DBField::create_field('Text', $form->getSearchQuery()),
'Title' => _t('SearchForm.SearchResults', 'Search Results')
);
return $this->owner->customise($data)->renderWith(array('Page_results', 'Page'));
} else {
return "Not Ajax";
}
}
}
表单将转到以下 URL
/new-ajax-form-page/SearchForm/?Search=asdasd&action_AjaxSubmit=Go
对于resultsAjax 方法的每个参数,我得到以下警告 1、2 和 3
[Warning] Missing argument 1 for AjaxFormPage_Controller::resultsAjax(), called in /var/www/projects/xxxx/framework/view/ViewableData.php on line 466 and defined
GET /new-ajax-form-page/SearchForm/?Search=asdasd&action_AjaxSubmit=Go
Line 137 in /var/www/projects/xxxx/mysite/AjaxFormPage.php
[Warning] Missing argument 2 for AjaxFormPage_Controller::resultsAjax(), called in /var/www/projects/xxxx/framework/view/ViewableData.php on line 466 and defined
GET /new-ajax-form-page/SearchForm/?Search=asdasd&action_AjaxSubmit=Go
Line 137 in /var/www/projects/xxxx/mysite/AjaxFormPage.php
[Warning] Missing argument 3 for AjaxFormPage_Controller::resultsAjax(), called in /var/www/projects/xxxx/framework/view/ViewableData.php on line 466 and defined
GET /new-ajax-form-page/SearchForm/?Search=asdasd&action_AjaxSubmit=Go
Line 137 in /var/www/projects/xxxx/mysite/AjaxFormPage.php
任何帮助如何使它工作将不胜感激。
【问题讨论】:
标签: silverstripe