2011-07-05 2 views

답변

2

에서

덕분에 Adding dynamic form elements using AHAH를 살펴 보자. Drupal의 폼 API를 사용하여 AHAH를 배울 수있는 좋은 안내서입니다.

편집 : 예를 들어 Examples for Developers module을 설치하면 학습을 돕기 위해 사용할 수있는 AHAH 예제가 있습니다.

+0

예를 들어 설명해 주시겠습니까? 나는 어딘가에 두들겨 맞았다 –

+0

@rad 내 편집 – Laxman13

+0

고마워. 정말 도움이되었습니다. 하지만 지금 직면 한 주요 문제는 값이 저장되지 않고 매번 새로 고침된다는 점입니다. –

0

다음은 Drupal 7에서 Ajax로이를 해결하는 방법의 예입니다. 누구든지 AHAH (Ajax가되기 전에 이름)를 사용하여 Drupal 6으로 변환 할 수도 있습니다.).

<?php 


function text_boxes_form($form, &$form_state) 
{ 
    $number = 0; 
    $addTextbox = false; 

    $form['text_lists'] = array 
    (
     '#tree' => true, 
     '#theme' => 'my_list_theme', 
     '#prefix' => '<div id="wrapper">', 
     '#suffix' => '</div>', 
    ); 

    if (array_key_exists('triggering_element', $form_state) && 
     array_key_exists('#name', $form_state['triggering_element']) && 
     $form_state['triggering_element']['#name'] == 'Add' 
    ) { 
     $addTextbox = true; 
    } 

    if (array_key_exists('values', $form_state) && array_key_exists('text_lists', $form_state['values'])) 
    { 
     foreach ($form_state['values']['text_lists'] as $element) { 
      $form['text_lists'][$number]['text'] = array(
       '#type' => 'textfield', 
      ); 
      $number++; 
     } 
    } 
    if ($addTextbox) { 
     $form['text_lists'][$number]['text'] = array(
      '#type' => 'textfield', 
     ); 
    } 

    $form['add_button'] = array(
     '#type' => 'button', 
     '#name' => 'Add', 
     '#ajax' => array(
      'callback' => 'ajax_add_textbox_callback', 
      'wrapper' => 'wrapper', 
      'method' => 'replace', 
      'effect' => 'fade', 
     ), 
     '#value' => t('Add'), 
    ); 

    return $form; 
} 

function ajax_add_textbox_callback($form, $form_state) 
{ 
    return $form['text_lists']; 
} 

function text_boxes_menu() 
{ 
    $items = array(); 

    $items['text_boxes'] = array(
     'title'   => 'Text Boxes', 
     'description'  => 'Text Boxes', 
     'page callback' => 'drupal_get_form', 
     'page arguments' => array('text_boxes_form'), 
     'access callback' => array(TRUE), 
     'type'   => MENU_CALLBACK, 
    ); 

    return $items; 
}