Кейс такой: есть форма редактирования, под ней отображается бутстраповский ButtonDropdown с текстом "Сохранить" и с выпадашкой с пунктами "Сохранить и редактировать" и "Сохранить и создать новую". Соответственно, в options для кнопки "Сохранить" прописано (для примера) name='form_button' и value='save', ну и соответственно type='submit'. Еще из важного: кнопка отображается с типом split, т.е. вот эта: http://getbootstrap.com/components/#btn-dropdowns-split
Если пользователь выбирает какое-то из значений в выпадашке, то значение value на кнопке "Сохранить" скриптом меняется на какое-то соответствующее (что-то типа save_edit или save_new) и форма сабмитится.
Проблема: т.к. ButtonDropdown рендерится в режиме split, то на самом деле отрисовываются две кнопки с почти идентичным набором опций, который берется из переданного options:
Код: Выделить всё
$options = $this->options;
$this->options['data-toggle'] = 'dropdown';
Html::addCssClass($this->options, ['toggle' => 'dropdown-toggle']);
unset($this->options['id']);
$splitButton = Button::widget([
'label' => '<span class="caret"></span>',
'encodeLabel' => false,
'options' => $this->options, <---- options передается в split кнопку
'view' => $this->getView(),
]);
<...>
return Button::widget([
'tagName' => $this->tagName,
'label' => $label,
'options' => $options, <----- options передается в кнопку с текстом
'encodeLabel' => false,
'view' => $this->getView(),
]) . "\n" . $splitButton; <------- аттачится split кнопка
Обходной путь в общем понятен, например, на split-кнопке очищать name, но вызывает сомнение необходимость для кнопки, которая всего лишь открывает выпадашку, присваивать type и name. Может написать разработчикам с предложением исправления? Или так и задумывалось?
UPD Ну в общем-то подобное issue уже открыто: https://github.com/yiisoft/yii2-bootstrap/issues/108