Миграция с TbForm на TbActiveForm yiibooster

Привет,

Недавно мне дали задание обновить наше расширение yiibooster.

У меня проблема в том, что этот код tbform больше не работает в этой версии yiibooster (кажется, что вся функциональность tbform была удалена)

 $sessionForm = new SessionSelectionForm();

$items = $dataModel->getDynamicFormSessionsConfig($sessionForm);

$form = TbForm::createForm(
array(
'title' => 'Session Registration',
'enableClientValidation' => true,
'enableAjaxValidation' => false, // Just keep this to false
'layout' => TbHtml::FORM_LAYOUT_HORIZONTAL,
'elements' => $items,
'buttons' => array(
'reset' => array(
'type' => 'reset',
'label' => 'Reset',
),
'submit' => array(
'type' => 'submit',
'label' => 'Next',
'layoutType' => 'primary'
),
//                        'cancel' => array(
//                            'type' => 'submit',
//                            'label' => 'Cancel',
//                            'layoutType' => 'warning'
//                        ),
),
), null, array(
'htmlOptions' => array('class' => 'well'),
'type' => 'horizontal',
), $sessionForm
);
return $form;

Я предпочитаю восстановить функциональность для этого, но мне не повезло, что это действительно работает. (tbactiveform.0 не определено)

$sessionForm = new SessionSelectionForm();

$items = $dataModel->getDynamicFormSessionsConfig($sessionForm);

$form = $this->beginWidget(
'booster.widgets.TbActiveForm',
array(
// 'title' => 'Session Registration',
'enableClientValidation' => true,
'enableAjaxValidation' => false, // Just keep this to false
// 'layout' => TbHtml::FORM_LAYOUT_HORIZONTAL,
'htmlOptions' => array(
'type' => 'horizontal',
'data' => $items,
),
null,  $sessionForm
)
);                                          // 'elements' => $items,
$this->widget(
'booster.widgets.TbButtonGroup',
array(
'buttons' => array(
array('label' => 'reset', 'buttonType' => 'reset'),
array('label' => 'next', 'buttonType' => 'submit'),
),
)
);
$this->endWidget();
return $form;

0

Решение

Начните с простого выполнения чего-то вроде:

$form = $this->beginWidget( 'booster.widgets.TbActiveForm', array(
'id'                    => 'contents-form',
'enableAjaxValidation'  => true,
) );

Построй отсюда. Если приведенный выше код дает вам ошибку, дайте мне знать, я уверен, что мы можем решить это :). Также обратите внимание, что вы даете слишком много параметров в функции beginWidget:

$form = $this->beginWidget(
'booster.widgets.TbActiveForm',
array(
// 'title' => 'Session Registration',
'enableClientValidation' => true,
'enableAjaxValidation' => false, // Just keep this to false
// 'layout' => TbHtml::FORM_LAYOUT_HORIZONTAL,
'htmlOptions' => array(
'type' => 'horizontal',
'data' => $items,
),
null,  $sessionForm
)
);

Здесь у вас есть 4 параметра, а

public function beginWidget($className,$properties=array()) {

занимает всего два.

0

Другие решения

Других решений пока нет …