나는 동적으로 추가 할 수있는 버튼을 추가하고 싶습니다. 드루팔 (drupal) 폼 API에 텍스트 상자가 있습니다. 누군가 도와 드릴 수 있습니까? 사전동적으로 텍스트 상자를 드루팔 (drupal) 형태로 추가합니다.
2
A
답변
2
에서
덕분에 Adding dynamic form elements using AHAH를 살펴 보자. Drupal의 폼 API를 사용하여 AHAH를 배울 수있는 좋은 안내서입니다.
편집 : 예를 들어 Examples for Developers module을 설치하면 학습을 돕기 위해 사용할 수있는 AHAH 예제가 있습니다.
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;
}
예를 들어 설명해 주시겠습니까? 나는 어딘가에 두들겨 맞았다 –
@rad 내 편집 – Laxman13
고마워. 정말 도움이되었습니다. 하지만 지금 직면 한 주요 문제는 값이 저장되지 않고 매번 새로 고침된다는 점입니다. –