Csak azt szeretném tudni, hogyan érhetünk el két ajax visszahívást egy beküldött űrlapon. Lehetséges? és hogyan?
Válasz
Nem, ez nem lehetséges. Miért lenne? Az Ajax visszahívása egy darab HTML-t adhat vissza az AJAX csomagoló cseréjéhez. Ha kettőt hív, melyiket használja a Drupal? Hogyan döntsön? Ez az oka annak, hogy #ajax["callback"]
függvény neveként definiálják, nem pedig nevek tömbjeként. elkerüli az ilyen problémákat.
Ha két függvényt kell meghívnia az AJAX eseményre válaszul, akkor írjon egy visszahívást, amely tartalmazza az első bekezdésben kért logikát, és a visszahívásból szükséges funkciókat. .
Válasz
Ezt nem lehet közvetlenül megtenni. Ehelyett használjon egy olyan függvényt, amely meghívja a másik két függvényt.
"#ajax" => array( "callback" => "my_callbacks_wrapper", ) ...
Ezután:
my_callbacks_wrapper($form, $form_state) { $first_callback_processed_form = first_callback($form, $form_state); $second_callback_processed_form = second_callback($first_callback_processed_form, $form_state); return $second_callback_processed_form; }
Győződjön meg róla, hogy a visszahívásai nem avatkoznak be.
Megjegyzések
- Rendeljen pozitív szavazatot. Hasznos szem előtt tartani, hogy az Ajax visszahívása tömb: return tömb (' #type ' = > ' ajax ', ' #commands ' = > $ parancsok); Előfordulhat, hogy ' egyszerűbb felhívni az első visszahívást, majd a hívás helyett adjon hozzá néhány értéket a #commands tömbhöz a második visszahívás. Lehet, hogy másolja a funkcionalitást, de az is lehet, hogy az egész visszahívás nem szükséges '.
- Igen, griz, igazad van. Az exmaple nagyon egyszerű, de ahogy mondod ' a két funkció eredményei. De ne feledje, hogy két funkció használata egy hack.
- @tunic – > Lehetséges két burkolóelem?