/** * @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); }