2016-06-22 5 views
0

Drupal hat dieses Ajax-Framework eingebaut. Also, ich kann eine Callback-Funktion mit dem Befehl wieWas passiert auf DOM in Drupal-Datei-Modul Ajax Upload

$commands = array(); 
$commands[] = ajax_command_replace(NULL, theme('status_messages')); 
return array('#type' => 'ajax', '#commands' => $commands); 

Der Ausgang wird von Drupal Ajax-Framework in irgendeiner Art und Weise schreiben dann verarbeitet, um schließlich das DOM manupulate. Wie die obige Funktion _replace die etwas im DOM basierend auf einer Wrapper-ID ersetzen.

Dieser obige Code stammt vom Modul file, das mit Drupal geliefert wird. Wenn Sie eine neue Datei hochladen, wird das Formular aktualisiert, um anzuzeigen, dass eine neue Datei in das Formular eingefügt wurde.

Wie das Dokument sagte, könnte das erste Argument NULL sein, wo es ein selector sein könnte. Ich bin besonders interessiert zu wissen, wie dieses file Modul die Wrapper ID berechnen, so dass es das DOM-Element als Endergebnis einfügen kann.

Antwort

0

Entnommen von der drupal Dokumentationsseite.

Wenn der Befehl eine Antwort auf eine Anfrage von einem #ajax Formularelement ist, kann dieser Wert NULL sein.

In der Funktion file_managed_file_process haben Sie das Formularelement upload_button, das eine Ajax-Anfrage an den Pfad 'file/ajax/...' sendet.

Der ajax_command_replace wird im Ajax-Callback in file_ajax_upload() verwendet. Die Anforderung stammt also vom Formularelement upload_button. In diesem Fall können Sie NULL anstelle eines Selektors verwenden.

+0

Also, wie Drupal weiß, was als "Selektor" zu ersetzen? Das Wrapper-Element des Trigger-Button-Elements? Sieht aus wie das gesamte Dateifeld ersetzt wurde. Es ist also eine ganze Kinderform? – Hao

+0

Es sollte den Wrapper ersetzen, der in $ ajax_settings ['wrapper'] angegeben ist. – Zolyboy