Вторая кнопка Сабмит в валидации. Как?

Главные вкладки

Аватар пользователя kompospec kompospec 26 января 2023 в 0:12

Вторая кнопка Сабмит в валидации. Как?

В своём модуле, во время валидации хочу выводить кнопки Да Нет

Кнопка Нет - просто отправляет форму и всё. Но загвоздка в том, что она отправляет форму опять на Валидацию.

Как сделать хорошо?

Спасибо.

Комментарии

Аватар пользователя OldWarrior OldWarrior 27 января 2023 в 7:56

Версию указываем.

И что значит "во время валидации хочу выводить кнопки Да Нет"? Зачем это? Кнопки должны строиться в build-функции формы. Но в функции валидации можно воздействовать на массив $form_state, чтобы затем при релоаде/перепостроении формы прочитать какие-то флаги и добавить кнопки.

Либо - самое каноническое решение - multistep-форма.

Если нужен просто пропуск ошибок валидации для определённой кнопки, то как-то так:

<?php
$form
['submit_no'] = [
  
'#type'       => 'submit',
  
'#value'      => 'Нет',
  ...
  
'#limit_validation_errors'  => [], // Пустой массив.
  
...
];
?>
Аватар пользователя ivnish ivnish 27 января 2023 в 19:56

Версию Drupal можно указать в специальном поле при создании нового поста. Ну или в крайнем случае в самом посте писать

Аватар пользователя kompospec kompospec 27 января 2023 в 21:34

Я если вижу ошибку - исправить её сразу не могу. Стоит какая то задержка.
А потом я про это забываю

Вот и сейчас:

Ваша учетная запись еще не подтверждена. Поэтому вы можете отправлять комментарий раз в 10 минут. Как только мы проверим вашу учетную запись, мы снимем все ограничения.

Аватар пользователя kompospec kompospec 27 января 2023 в 17:25

Спасибо за ответ. Но:

<?php

function _form_validation_number_title_validate(&$form, \Drupal\Core\Form\FormStateInterface $form_state) {

if (

$_POST['net']) return;

elseif(

$vadr){

      

$sozzak .= '
По данному адресу уже были работы, создать заказчика?
  <form id="da" action="/node/add/z" target="_blank">
  <input type="submit" form="da" id="da" name="da" value="Да">

  </form>
  
  
  <input type="button" id="net" name="net" value="Нет" form="node-zaka-edit-form">
  

'

;
    
    
$rendered_message = \Drupal\Core\Render\Markup::create($sozzak);
      
        
$form_state->setErrorByName('field_vvedite_adr'$rendered_message);
        
        \
Drupal::messenger()->addStatus($rendered_message);
        return;
        }
    }}}

}

?>

Нажатие на кнопку Нет ведёт не к сохранению, а опять на редактирование: node/7880/edit