/**
  * @return FieldList Fields for this form.
  */
 protected function getFormFields()
 {
     $request = Controller::curr()->getRequest();
     $fields = new FieldList();
     if (self::config()->get('category')) {
         $categories = $this->getBlog()->Categories()->map()->toArray();
         /** @var DropDownField $categoryField */
         $categoryField = DropdownField::create('Category', _t('BlogSearchForm.Category', 'Category'), $categories, $request->getVar('category'));
         $categoryField->setHasEmptyDefault(true);
         $fields->push($categoryField);
     }
     if (self::config()->get('keyword')) {
         $keywordField = TextField::create('Keyword', _t('BlogSearchForm.Keyword', 'Keyword'), $request->getVar('keyword'));
         $fields->push($keywordField);
     }
     $fields->changeFieldOrder(self::config()->get('field_order'));
     $this->extend('updateFormFields', $fields);
     return $fields;
 }
 /**
  * FieldList::changeFieldOrder() should place specified fields in given
  * order then add any unspecified remainders at the end. Can be given an
  * array or list of arguments.
  */
 public function testChangeFieldOrder()
 {
     $fieldNames = array('A', 'B', 'C', 'D', 'E');
     $setArray = new FieldList();
     $setArgs = new FieldList();
     foreach ($fieldNames as $fN) {
         $setArray->push(new TextField($fN));
         $setArgs->push(new TextField($fN));
     }
     $setArray->changeFieldOrder(array('D', 'B', 'E'));
     $this->assertEquals(0, $setArray->fieldPosition('D'));
     $this->assertEquals(1, $setArray->fieldPosition('B'));
     $this->assertEquals(2, $setArray->fieldPosition('E'));
     $this->assertEquals(3, $setArray->fieldPosition('A'));
     $this->assertEquals(4, $setArray->fieldPosition('C'));
     $setArgs->changeFieldOrder('D', 'B', 'E');
     $this->assertEquals(0, $setArgs->fieldPosition('D'));
     $this->assertEquals(1, $setArgs->fieldPosition('B'));
     $this->assertEquals(2, $setArgs->fieldPosition('E'));
     $this->assertEquals(3, $setArgs->fieldPosition('A'));
     $this->assertEquals(4, $setArgs->fieldPosition('C'));
     unset($setArray, $setArgs);
 }