2015-03-06 5 views
1

Я добавляю обычай выпадающие к модулю UserForm, и все, казалось, работали, однако:SilverStripe модуль UserForm, добавление пользовательских полей

Если я установил следующее: [TextField One] - Выпадающее один вариант [Текстовое поле два] - вариант с раскрывающимся окном

Кажется, сохранить значение только в поле Textfield One и игнорировать Textfield Two. Если я вернусь и снова поставлю Textfield Two, он вытечет Textfield One.

Должен ли я перебирать что-то, экономя каждое значение независимо или ...?

Класс;

class CustomEditableFormField extends DataExtension 
{ 
    public function updateFieldConfiguration(FieldList $fields) 
    { 
    $fields->push(DropdownField::create($this->owner->getSettingName('CustomTextId'), 'Custom field') 
     ->setSource(array("1" => "One", "2" => "Two")) 
     ->setEmptyString($this->owner->getSetting('CustomTextId'))); 
    } 
} 

и мой config.yml

EditableFormField: 
    extensions: 
    - CustomEditableFormField 

ответ

0

Правильный способ добавления пользовательского расширения является:

public function updateFieldConfiguration(FieldList $fields) 
{ 
    $fields->push(DropdownField::create(
     $this->owner->getSettingName('CustomTextId'), 
     'Custom field', 
     $this->getData(), 
     $this->owner->getSetting('CustomTextId')) 
    ); 
} 

Основной проблемой, находясь в котором вызывается функция getSetting.

-1

Я думаю, что вы хотите подкласс EditableFormField, не украсить его.

Общее правило большого пальца - это одно поле для одной части данных (но необязательно).

И эти поля формы являются общими, не определенными для цели, поэтому они редактируются, а не бесконечные массивы прецедентов.

Так что я не уверен, что это решение - это то, что вам нужно.

Тем более что EditableFormField :: getFieldConfiguration() не принимает любых параметров, не говоря уже о полном полевом списке.

Похоже, вы пытаетесь просто пропустить этап настройки добавления поля формы, и в этом случае ваш подкласс - это ваш ответ.

Смежные вопросы