- Posted by: Tommy Tran
- Sat, 6/10/2012, 9:58 (GMT+7)
- Web Designer
- 0 Bình luận
Hướng dẫn multiple submit buttons dùng Form API trong Drupal 8
In this article, I'll show you how to add multiple submit buttons using Form API in drupal 8.
to add many submit buttons to your form, juste add "#submit" property to every element like this:
$form['actions']['previous'] = array( '#type' => 'submit', '#submit' => array([$this, 'previousForm']), '#value' => 'Previous', '#limit_validation_errors' => array(), //no validation for back button ); public static function previousForm(array &$form, FormStateInterface $form_state) { //TODO: your code }
PHP
or you can use it like this '#submit' => array('::previousForm').
#submit: Specifies an alternate callback for form submission when the submit button is pressed. Use '::methodName' format or an array containing the object and method name (for example, [ $this, 'methodName'] ).
Example
<?php namespace Drupal\codimth_form_api\Form; use Drupal\Core\Form\ConfigFormBase; use Drupal\Core\Form\FormBase; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Url; /** * Implements a codimth Config Form API. */ class CodimthConfigForm extends ConfigFormBase { /** * @return string */ public function getFormId() { return 'codimth_form_api_admin_settings'; } /** * Gets the configuration names that will be editable. * * @return array * An array of configuration object names that are editable if called in * conjunction with the trait's config() method. */ protected function getEditableConfigNames() { return [ 'codimth_form_api.settings', ]; } /** * @param array $form * @param FormStateInterface $form_state * @return array */ public function buildForm(array $form, FormStateInterface $form_state) { $form['actions'] = [ '#type' => 'actions', ]; $form['actions']['submit1'] = [ '#type' => 'submit', '#value' => $this->t('Submit One'), "#weight" => 1, '#submit' => array([$this, 'submitFormOne']), '#limit_validation_errors' => array() ]; $form['actions']['submit2'] = [ '#type' => 'submit', '#value' => $this->t('Submit Two'), "#weight" => 2, '#button_type' => 'primary', '#submit' => array([$this, 'submitFormTwo']), '#limit_validation_errors' => array() ]; return parent::buildForm($form, $form_state); } /** * {@inheritdoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { //TODO: write your code parent::submitForm($form, $form_state); } /** * {@inheritdoc} */ public function submitFormPreOne(array &$form, FormStateInterface $form_state) { //TODO: write your code } /** * {@inheritdoc} */ public function submitFormTwo(array &$form, FormStateInterface $form_state) { //TODO: write your code } }
Bình luận (0)
Add Comment