Zaktualizowałem jeden z moich modułów Drupal 7 do 8 i mam problem ze zmianą formularza. Dodaję funkcję sprawdzania poprawności i moduł obsługi przesyłania. Funkcja sprawdzania poprawności jest dobrze wywoływana, ale funkcja wysyłania się nie uruchamia. Zastanawiam się, czy to oznacza, że istnieje podejście w stylu Symfony, które należy zastosować, aby dodać procedury obsługi przesyłania do istniejących formularzy. Przeprowadziłem wiele poszukiwań i nie mogę znaleźć żadnych przykładów. Przeglądałem również niektóre moduły D8 w toku, ale tak naprawdę nie znalazłem tam żadnych działających przykładów.
Czy ktoś ma pojęcie, jaki jest właściwy sposób Drupala 8?
Odpowiedzi:
Zgodnie z przykładem w dokumentacji jest taki sam, jak w przypadku Drupal 7:
Możesz znaleźć podobną (działającą) logikę
contact_form_user_form_alter()
editor_form_filter_format_form_alter()
locale_form_language_admin_edit_form_alter()
I jeszcze kilka innych.
źródło
Możesz dodać, ile chcesz przesłać obsługi, używając następującego kodu:
Jeśli chcesz dodać moduł obsługi przesyłania po domyślnym module obsługi przesyłania (program obsługi przesyłania, który zostanie wywołany po wywołaniu zwrotnym przesyłania), możesz użyć następujących opcji.
Aby usunąć moduł obsługi przesyłania:
źródło
Zachowanie jest zmienione lub różni się w zależności od przypadku. Za pomocą formularza potwierdzenia wielokrotnego usunięcia węzła
@ Kod Clive'a powoduje, że Drupal ignoruje główny moduł obsługi. W takim przypadku dodaj moduł obsługi do
$form['#submit']
sekcji:źródło
Oto jak dołączyć niestandardową procedurę obsługi przesyłania do formularza dodawania / edycji węzła artykułu w Drupal 8:
Nie byłem w stanie z powodzeniem dołączyć niestandardowej procedury obsługi przesyłania
$form['#submit']
i mieć poprawnie uruchomionej funkcji. I miał jawnie dołączyć go do zapisania i publikacji przycisku podczas tworzenia nowego artykułu, i dołączyć go do Zachowaj i zachować opublikowany przycisku podczas edycji istniejącego artykułu.Poza tym
publish
oto niektóre z innych dostępnych akcji przycisków:źródło
my_module_node_article_form_submit($form, FormStateInterface $form_state
dałem miTypeError: Argument 2 passed to _ccad_content_log_webform_submit() must be an instance of FormStateInterface, instance of Drupal\Core\Form\FormState given
; zmieniając go, aby_submit($form, $form_state)
naprawić błędy.