Переделать в вебморме <input type=submit> на <button>

Аватар пользователя fgvlasov fgvlasov 11 ноября в 20:02

Здравствуйте, встретился с неожиданной проблемой. Не могу сделать кнопку button вместо штатного input type=submit
Не стал бы заморачиваться, да отдали мне скомпилированную верстку, которую нельзя менять, там внутри кнопки оформление span , на которую завязаны хитрые стили.
Вроде и нашел инструкцию у всем известного http://xandeadx.ru/blog/drupal/860
сделал по ней, но кнопка новая не срабатывала, просто перегрузка страницы шла. Нашел в англоязычном интернете решение: https://www.hashbangcode.com/article/changing-submit-input-elements-buttons-drupal-7
там как раз пишут: After lots of digging around and following the form code execution I managed to figure out that Drupal wasn't able to see what button had been clicked on and so assumed that the first button defined in the form was the correct element. Короче друпал не понимает, что это нужный сабмит, и у человека решение через какой-то неведомый мне триггер и функция form_builder().

но не могу повторить толком, там люди свои формы через модуль делают, а мне надо подменить стандартную кнопку у вебформы, которая модулем WEBform создана.

Сделал тестовый сайт: http://test.ptzsite.ru
Исполнителю дам доступ, бюджет предполагаемый 500 р, если кто разбирается.


<?php 
/**
 * Implements hook_theme().
 */
function test_theme() {
  return array(
    
'button_button' => array(
      
'render element' => 'element',
    ),
  );
}
 
/**
 * Button theme function.
 * @see theme_button().
 */
function test_button_button($variables) {
  
$element $variables['element'];
  
$element['#attributes']['type'] = 'submit';
  
element_set_attributes($element, array('id''name''value'));
 
  
$element['#attributes']['class'][] = 'form-' $element['#button_type'];
  if (!empty(
$element['#attributes']['disabled'])) {
    
$element['#attributes']['class'][] = 'form-button-disabled';
  }
 
  if (empty(
$element['#text'])) {
    
$element['#text'] = $element['#value'];
  }
 
  return 
'<button' drupal_attributes($element['#attributes']) . '>' $element['#text'] . '</button>';
}

/**
 * Form builder.
 */
function test_form_webform_client_form_1_alter(&$form, &$form_state$form_id) {
kpr($form);
  
$form['action']['submit'] = array(
    
'#type' => 'submit',
    
'#value' => t('Add') . ' <span class="icon icon-add"></span>',
    
'#theme_wrappers' => array('button_button'),
  );

}

?>
0 Thanks

Лучший ответ

Комментарии

Аватар пользователя ivnish ivnish 11 ноября в 20:03

Не могу сделать кнопку button вместо штатного input type=submit

А для чего это нужно?

Аватар пользователя fgvlasov fgvlasov 11 ноября в 20:09

чтобы такое выдать:
<button type="submit" class="whiteButton rightArrow"><span>Заказать обратный звонок</span></button>

Аватар пользователя fgvlasov fgvlasov 11 ноября в 21:43

Спасибо! что же я сам не догадался, переделал на всем сайте сабмиты в кнопки и голова не болит.

Аватар пользователя VasyOK VasyOK 11 ноября в 22:52
1

Не натягивайте верстку, сделанную отдельно от сайта и голова болеть не будет. У того, кто верстал голова же не болит.

Аватар пользователя fgvlasov fgvlasov 11 ноября в 22:58

на самом деле там верстка хорошая была, все остальное натянулось . Да и вообще весь мир сабмиты на баттонах делает, svg притягивают на них да бутстрап весь на баттонах. Что там у нас на 8 версии друпала?

Аватар пользователя ivnish ivnish 11 ноября в 22:59

Сделайте issue у модуля webform с этим вопросом, интерено что скажут другие разработчики и участники сообщества)