在单独的页面上显示搜索结果

I have a SilverStripe site with some code to display a search form. The for allows you to search for something based on 3 things. Problem is, I'm not sure how to get the results to display correctly on a separate page.

My code:

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));
    }
}

It seems to be displaying results on the same page but gives me a bunch of weird data. For example, I got this when I tested the form: Array ( [DegreeType] => 53 [Course] => 1 [City] => 1 [SecurityID] => 02718d0283e27eeb539eff19616e0b23eadd6b94 [action_Search] => Find a College )

The result is supposed to be an organized list of colleges (along with other data).

I guess that what you are seeing is expected behavior, as the form will post to the Search function, and that one is just returning a print_r of an array with the post vars which will be picked up by the template.

Otherwise, there are a lot of things not corresponding with the Silverstripe default way to handle forms. Please take a look here and change your form accordingly: https://docs.silverstripe.org/en/3.4/tutorials/forms/

For example, give the form the same name as your function (or in your case, change the function name to the form name). Then implement the action function.