검색 양식을 표시하는 코드가있는 SilverStripe 사이트가 있습니다. for를 사용하면 3 가지를 기반으로 무언가를 검색 할 수 있습니다. 문제는, 결과를 별도의 페이지에 올바르게 표시하는 방법을 모르겠습니다.별도의 페이지에 검색 결과 표시
내 코드 :
class InstitutionSearchPage extends Page {
}
class InstitutionSearchPage_Controller extends Page_Controller {
private static $allowed_actions = array(
'Search'
);
public function Form() {
$fields = new FieldList(array(
DropdownField::create('DegreeType', 'Degree', QualificationType::get()->filter('ParentID', 0)->map()),
DropdownField::create('Course', 'Course', Qualification::get()->map()),
DropdownField::create('City', 'City', City::get()->map()),
));
$actions = new FieldList(array(
FormAction::create('Search')->setTitle('Find a College')
));
$validator = ZenValidator::create();
$validator->addRequiredFields(array(
'DegreeType' => 'Please select a Degree',
'Course' => 'Please select a course',
'City' => 'Please select a city',
));
$form = new Form($this, 'Search', $fields, $actions, $validator);
$form->setLegend('Criteria')->addExtraClass('form-horizontal')->setAttribute('data-toggle', 'validator');
// Load the form with previously sent data
$form->loadDataFrom($this->request->postVars());
return $form;
}
public function Search() {
return array('Content' => print_r($this->getRequest()->postVars(), true));
}
}
그것은 같은 페이지에 결과를 표시하는 것 같지만 나에게 이상한 데이터의 무리를 준다. 예를 들어, 양식을 테스트했을 때 이것을 받았습니다 : Array ([DegreeType] => 53 [Course] => 1 [City] => 1 [SecurityID] => 02718d0283e27eeb539eff19616e0b23eadd6b94 [action_Search] => Find a College)
결과는 다른 데이터와 함께 조직 된 목록이어야합니다.
검색 결과 함수는'return array ('Content'=> print_r ($ this-> getRequest() -> postVars(), true))'를 반환합니다. 즉, 검색 양식을 제출 한 필드를 침을 뱉어 버리는 것입니다. 테스트 예제는 제대로 수행하고있는 것처럼 보입니다. – 3dgoo
결과의 DataList를 반환하고 템플릿의 내용을 반복하려면 '검색'기능을 업데이트해야합니다. 다음은이 작업을 수행하는 방법을 보여주는 좋은 SilverStripe 강의입니다. https://www.silverstripe.org/learn/lessons/building-a-search-form – 3dgoo