Ajax generált formelemekből hiányzik a NAME attribútum

pero képe

Sziasztok

Hosszas kínlódás után fordulok hozzátok.

A következőt szeretném:

Van egy formom egy select-el és egy "container" típusú wrapperrel.

a Selecten van egy ajax callback, ami a container wrappert cseréli ki, egy fieldsetre, benne pedig egy textareaval.

Kiválóan működik is, de ha elküldöm a formot, a textarea hiányzik a $form_state["values"]-ből

Ha megnézem a html forrást, ezt látom:

<textarea class="form-control form-textarea" cols="60" rows="5"></textarea>

Azaz a textareának nincs name attribútuma, így joggal hiányzik a $form_state["values"]-ból

Miért lehet ez?

(A fieldset-nek beállítottam: #tree => true)

Nagyon köszönöm!

Drupal verzió: 
pero képe

A kód lebutítva:

  1. function karbantartasi_szerzodesek_form($form, &$form_state, $defalt_gyariszam) {
  2.  
  3.  
  4. $form['gyariszam'] = array(
  5. '#type' => 'select',
  6. '#tree' => true,
  7. '#title' => 'Gyári szám',
  8. '#attributes' => array('class' => array('product-chosen'),),
  9. '#empty_option' => t('- Select -'),
  10. '#options' => $gyariszamok,
  11. '#required' => TRUE,
  12. '#default_value' => isset($defalt_gyariszam) ? $defalt_gyariszam : NULL,
  13. '#ajax' => array(
  14. 'callback' => 'karban_adatok_ajax_callback',
  15. 'wrapper' => 'karban_wrapper',
  16. 'method' => 'replace',
  17. 'effect' => 'fade',
  18. ),
  19. );
  20.  
  21.  
  22. $form['karban_wrapper'] = array(
  23. '#type' => 'container',
  24. '#prefix' => '<div id="karban_wrapper">',
  25. '#suffix' => '</div>',
  26. );
  27.  
  28.  
  29. $form['submit'] = array(
  30. '#value' => 'Mehet',
  31. '#type' => 'submit',
  32. );
  33.  
  34.  
  35. return $form;
  36. }
  37.  
  38.  
  39.  
  40. function karban_adatok_ajax_callback($form, $form_state) {
  41.  
  42.  
  43. if ( $form_state['values']['gyariszam'] == '' ) {
  44. return $form['karban_wrapper'];
  45. }
  46.  
  47.  
  48. $form['karban_wrapper']['karban'] = array(
  49. '#type' => 'fieldset',
  50. '#title' => 'GYÁRISZÁM: '.$form_state['values']['gyariszam'],
  51. '#tree' => true,
  52. );
  53.  
  54.  
  55. $form['karban_wrapper']['karban']['tevekenyseg'] = array(
  56. '#title' => t('Tevékenységek'),
  57. '#type' => 'textarea',
  58. );
  59.  
  60. return $form['karban_wrapper'];
  61. }
0
0
pero képe

Az alábbi kód működik:

  1. function karbantartasi_szerzodesek_form($form, &$form_state, $defalt_gyariszam) {
  2.  
  3.  
  4. $form['gyariszam'] = array(
  5. '#type' => 'select',
  6. '#tree' => true,
  7. '#title' => 'Gyári szám',
  8. '#attributes' => array('class' => array('product-chosen'),),
  9. '#empty_option' => t('- Select -'),
  10. '#options' => $gyariszamok,
  11. '#required' => TRUE,
  12. '#default_value' => isset($defalt_gyariszam) ? $defalt_gyariszam : NULL,
  13. '#ajax' => array(
  14. 'callback' => 'karban_adatok_ajax_callback',
  15. 'wrapper' => 'karban_wrapper',
  16. 'method' => 'replace',
  17. 'effect' => 'fade',
  18. ),
  19. );
  20.  
  21.  
  22. $form['karban_wrapper'] = array(
  23. '#type' => 'container',
  24. '#prefix' => '<div id="karban_wrapper">',
  25. '#suffix' => '</div>',
  26. );
  27.  
  28. if ( $form_state['values']['gyariszam'] != '' ) {
  29.  
  30. $form['karban_wrapper']['karban'] = array(
  31. '#type' => 'fieldset',
  32. '#title' => 'GYÁRISZÁM: '.$form_state['values']['gyariszam'],
  33. '#tree' => true,
  34. );
  35.  
  36.  
  37. $form['karban_wrapper']['karban']['tevekenyseg'] = array(
  38. '#title' => t('Tevékenységek'),
  39. '#type' => 'textarea',
  40. );
  41. }
  42.  
  43.  
  44. $form['submit'] = array(
  45. '#value' => 'Mehet',
  46. '#type' => 'submit',
  47. );
  48.  
  49.  
  50. return $form;
  51. }
  52.  
  53. function karban_adatok_ajax_callback($form, $form_state) {
  54. return $form['karban_wrapper'];
  55. }
0
0