webform componens beállító oldalra ajax kérés

danart képe

Sziasztok,

a webform componens beállító oldalára szeretnék ajaxos mezőt betenni, de valamiért sehogy sem fut le.

"Egy AJAX HTTP hiba következett be. HTTP eredménykód: 200 A hibakeresési információk következnek. Útvonal: .../system/ajax
Állapotüzenet: parsererror Válaszüzenet:
( ! ) Fatal error: Call to undefined function _webform_edit_validate_options() in .../includes/form.inc on line 1377"

Már az example modulból a legalapabb ajax példát is megpróbáltam beletenni a form_alter-embe de ott mindig a fenti hibát adja, mikor elindul az ajaxos kérés.

A végső cél taxonómiából töltődő egymástól függő 3 select mező lenne.
Az elsőtől függ a második, aztán attól a harmadik...

Tudna valaki segíteni, hogy hol keressem a hibát?

Köszi,
Üdv.: Dani

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
Den képe

Include-old a fájlt, amelyik tartalmazza a _webform_edit_validate_options() függvényt.

Ha kell, saját ajax oldalad hívd meg, és a konkrét műveletek előtt include-olj.

0
0
danart képe

most az ajax exaples-ből az _alter példát próbálom átültetni. Az node-hoz van, nekem webform-hoz kell. Itt van a kód, mivel még sosem csináltam ajax-os műveleteket, így lehet valami alapvető dolgot hagytam ki belőle.
http://snipt.org/tnQo1

Köszi a segítséget!

0
0
fox mulder képe

$form['container'] = array(
    '#prefix' => '<div id="ajax-example-form-node">',
    '#suffix' => '</div>',
  );

helyett
$form['container'] = array(
    '#prefix' => '<div id="webform_component_categories_wrapper">',
    '#suffix' => '</div>',
  );

mert az lett megadva a $form['ajax_example_1']['#ajax']['wrapper']-ben.

Miért "webform_" áll a függvények nevének kezdetén? Nem saját a modul?

0
0

Fox Mulder

danart képe

Mivel ez egy kiegészítés a webform modulhoz, ezért gondoltam webform component categories-nak keresztelem el a modulomat.
Mondjuk ezáltal igen cifra függvény nevek születnek - de így tűnt logikusnak.

0
0
fox mulder képe

Most tényleg kipróbáltam, állítgattam a system táblában a weight értékét (valahol itt lehet a gond, általában a modulok súlya 0, a webform-é -1, de 10-re is beállítottam, semmi...), próbáltam mindenhonnan beemelni (require()) a webform_component_edit_form_validate()-et tartalmazó webform.components.inc fájlt, de mindig ugyanazt kaptam, amit Te is.

Egy dolog vezetett sikerre:

function webform_component_categories_form_webform_component_edit_form_alter(&$form, &$form_state, $form_id) {
  ...
  $form['#validate'] = array();
}

Ez persze buherálás...

A 200 egyébként pont, hogy nem hibakód (lásd itt, 10.2.1. pont).

0
0

Fox Mulder

danart képe

Úgy látszik ez túlmutat a jelenlegi képességeimen, nálam továbbra is fennél a 200as üzenet.
Önmagában a validate kivétele talán nem elég, lehet beletettél súlyozás-t és amiatt fut le nálad 200as kód nélkül.
Meg tudnád mutatni, hogy milyen kóddal futott le?
Köszi, a segítséget!

0
0
fox mulder képe

<?php
// $Id: $
 
function webform_test_form_webform_component_edit_form_alter(&$form, &$form_state, $form_id) { 
//drupal_set_message('<pre>' . print_r($form['#validate'], TRUE) . '</pre>');
  $form['ajax_example_1'] = array(
    '#type' => 'checkbox',
    '#title' => t('AJAX Example 1'),
    '#description' => t('Enable to show second field.'),
    '#default_value' => '',
    '#ajax' => array(
      'callback' => 'webform_test_form_callback',
      'wrapper' => 'webform_test_categories_wrapper',
      'effect' => 'fade',
    ),
    '#weight' => -20
  );
 
  $form['container'] = array(
    '#prefix' => '<div id="webform_test_categories_wrapper">',
    '#suffix' => '</div>',
    '#weight' => -19
  );
 
 
  if (!empty($form_state['values']['ajax_example_1']) && $form_state['values']['ajax_example_1'] == 1) {
    $form['container']['ajax_example_2'] = array(
      '#type' => 'textfield',
      '#title' => t('AJAX Example 2'),
      '#description' => t('AJAX Example 2'),
      '#default_value' => '',
    );
  }
  $form['#validate'] = array();
}
 
function webform_test_form_callback($form, $form_state) { 
  return $form['container'];
}

Súlyok: webform: -1, webform_test: 0.

0
0

Fox Mulder

danart képe

Újra, létre kellett hoznom egy űrlapot, és akkor már lefutott rendesen.
Megpróbálom még a validation részt megkapargatni, hátha sikerül valami választ kreálni.

update1: Érdekes, hogy pl. a figyelmeztető üzeneteket is betölti az ajax által generált részbe. Ilyennel találkozott már valaki? Esetleg, valami ötlet, hogy mi lehet az oka?

update2: Most vettem észre, ha select típusú komponens a komponens továbbra is előjön a kezdeni probléma.
Valakinek ötlete, hogy mi lehet a probléma a select mezővel? Ha az option element modult kikapcsolom, akkor is fennáll a probléma.

0
0