I have created custom fields using field,field widget and field formatters. One of the field I have created is a button. What I need is to write the submit handler for that button.
This is my CertfieldDefaultWidget.php
namespace Drupal\certfield\Plugin\Field\FieldWidget; use Drupal; use Drupal\Core\Field\FieldItemListInterface; use Drupal\Core\Field\WidgetBase; use Drupal\Core\Form\FormStateInterface; /** * Plugin implementation of the 'CertfieldDefaultWidget' widget. * * @FieldWidget( * id = "CertfieldDefaultWidget", * label = @Translation("Certfield select"), * field_types = { * "Certfield" * } * ) */ class CertfieldDefaultWidget extends WidgetBase { /** * Define the form for the field type. * * Inside this method we can define the form used to edit the field type. * * Here there is a list of allowed element types: https://goo.gl/XVd4tA */ public function formElement( FieldItemListInterface $items, $delta, Array $element, Array &$form, FormStateInterface $formState ) { //print_r($items[$delta]->cert_fqdn); //exit(); $element['cert_fqdn'] = [ '#type' => 'textfield', '#title' => t('Fully qualified Domain Name'), '#value' => isset($items[$delta]->cert_fqdn) ? $items[$delta]->cert_fqdn : null, '#empty_value' => '', '#placeholder' => t('Fully qualified Domain Name'), ]; $element['privatekey'] = [ '#type' => 'textfield', '#title' => t('Private Key'), // Set here the current value for this field, or a default value (or // null) if there is no a value '#default_value' => isset($items[$delta]->cert_key) ? $items[$delta]->cert_key : null, '#empty_value' => '', '#placeholder' => t('PrivateKey'), ]; // City $element['csr'] = [ '#type' => 'textfield', '#title' => t('Certificate Signing Request'), '#default_value' => isset($items[$delta]->cert_csr) ? $items[$delta]->cert_csr : null, '#empty_value' => '', '#placeholder' => t('Certificate Signing Request'), ]; $element['cert_crt'] = [ '#type' => 'textfield', '#title' => t('Server Certificate'), '#placeholder' => t('Server Certificate'), ]; $element['create_cert_btn'] = [ '#type' => 'submit', '#title' => t('Server Certificate'), '#placeholder' => t('Server Certificate'), ]; $element['create_cert_btn'] = array( //'#name' => implode('_', $element['#parents']) .'_create_cert_btn', '#type' => 'submit', '#value' => t('Create/Renew Cert'), '#callback' => '_certfield_button_action' ); return $element; } } // class ?>
In my certfield.module
OR CertfieldDefaultWidget.php
file I have a function like as below
function _certfield_button_action(&$element, $form_state, $button){ }
But none of them is called when clicks on the Button .Please help me to find out a solution .