CTools 패널 컨텐츠 유형 (즉, 노드 유형이 아닌 컨텐츠를 추가 할 때 패널에 삽입하는 것)을 작성 중이며 양식 항목의 #ajax
속성을 사용하여 일부 기본값을 설정 하려고 합니다. 아래 코드를 참조하십시오.
그건 my_module_content_type_edit_form($form, &$form_state)
그렇고 콘텐츠 유형의 호출 내부에 있습니다.
$form['link_type'] = array(
'#type' => 'radios',
'#title' => t('Link Type'),
'#ajax' => array(
'callback' => 'my_module_set_target'
),
'#default_value' => empty($conf['link_type']) ? '_blank' : $conf['link_type'],
'#options' => array('none'=>t('No Link'), 'internal'=>t('Internal Link'), 'external'=>t('External Link'), 'document'=>t('Document Link')),
);
내 콜백은 다음과 같습니다.
function my_module_set_target($form, $form_state) {
watchdog("Test", "Testing callback", array(), WATCHDOG_ALERT);
$form['link_target']['#default_value'] = '_parent';
return $form['link_target']['#default_value'];
}
내가 제안하는 수익이 실제로 효과가 있는지 여부에 관계없이 작동 watchdog()
하지 않습니다.
CTools가 AJAX로 이상한 일을한다는 것을 알고 있지만 그렇게 이상 할 수는 없습니다. 내가하고 싶은 일을 어떻게하는지에 대한 아이디어가 있습니까?
감사!
또는 이전 양식 옵션의 값을 기반으로 기본값을 설정하는 방법은 무엇입니까?
이 작업을 수행하는 방법을 찾았지만 약간 해킹 적입니다. 각 종속성 포크마다 새 양식 필드를 만듭니다. 그런 다음 hook_content_type_edit_form_submit()
처음에 모든 항목을 분기 한 구성 요소에 대해 선택된 값을 사용하여 값을에 병합 할 수 있습니다 .
나는 (그리고 솔직히, 내가 일하는 모든 프로그래머가)이 패널 내용 유형 편집 양식 내에서 AJAX를 사용하는 좋은 방법을 정말로 원하기 때문에 질문을 열어두고 있습니다.
업데이트 : #attached로도 할 수없는 것처럼 보입니다.
$form['link'][$i] = array(
'#type' => 'fieldset',
'#title' => t('Link #@num', array('@num' => $i)),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
'#attached' => array(
'js' => array(
'alert("Yay.");', 'inline'
),
)
);
ctools_add_js();
또는 drupal_add_js();
의 끝에서 hook_content_type_edit_form();
. 간단한 UI 관련 작업을 수행하는 경우 가장 좋은 전화 일 것 같습니다 (적어도 누군가 가이 질문에 올바르게 대답 할 때까지).