2010-05-14 8 views
2

내가 틀렸다면 drupal fapi 관련 기사를 읽은 후에 올바른지, fapi가 'id'속성을 자체적으로 생성한다는 인상을 받았습니다. 개발자는 'name'속성 만 할당 할 수 있습니다. 그렇다면 요소에 대한 'id'값을 설정할 수있는 방법이 있습니까? 왜냐하면 html/jquery 코드가 이미 사용 된 id를 변경하기 위해 이미 작성된 jquery 코드를 거치지 않고도 시간을 절약 할 수 있도록 의미있는 'id'를 갖기를 원하기 때문입니다.사용자 정의 ID가있는 Drupal 양식

P.S : 드루팔 버전 - 6.x의

답변

0

이 문제는 정말 더 드루팔 테마 형태 (마크 업을 만드는) 방법에 드루팔 - FAPI 자체에 할 일이 많이있다, 그러나하지 않습니다.

  • 사이트의 모든 양식을 변경하려면 양식 및 다른 유형의 양식 필드에 사용되는 테마 기능을 덮어 쓸 수 있습니다.

  • 일부 양식이나 양식 필드를 덮어 쓰려는 경우 양식 또는 요소에 #theme 특성을 설정하여 태그 작성에 사용할 함수를 변경할 수 있습니다.

+0

테마 기능 내 요소를 구성하기 위해 고유 한 Id 속성을 설정할 수 있다는 의미입니까? 그렇다면 요소의 ID 속성을 어떻게 참조 할 수 있습니까? 나는 여기서 잃어버린 것 같아. 감사합니다. – Andrew

+0

이 솔루션을 찾았습니다. 폼 요소의 속성 키를 사용하여 클래스, id 등의 추가 속성을 설정할 수 있습니다. 지금까지 도와 줘서 고마워. – Andrew

2

확인 결과. $form 요소의 #attributes 키를 사용하여 클래스, ID 등과 같은 추가 속성을 설정할 수 있습니다. 지금까지 도와 줘서 고마워.

1

나는 비슷한 문제를 다루었습니다. 동일한 페이지에 여러 양식이 있어야하므로 중복 ID를 방지하기 위해 양식의 ID와 그 요소를 변경해야했습니다. 나는 다음과 같은 일을했다 :

function voci_comment_form($form, &$form_state, $cid) { 
    $form['#attributes']['id'] = 'voci-comment-form-' . $cid; 
    $form['#attributes']['class'][] = 'voci-comment-form'; 
    $form['body'] = array(
    '#title' => 'Post a comment', 
    '#type' => 'textarea', 
    '#resizable' => FALSE, 
    '#rows' => 1, 
); 
    $form['comment'] = array(
    '#type' => 'submit', 
    '#value' => 'Comment', 
); 

    foreach ($form as $k => &$element) { 
    $k = str_replace('_', '-', $k); 
    $element['#attributes']['id'] = "edit-$k-$cid"; 
    $element['#attributes']['class'][] = "edit-$k"; 
    } 

    return $form; 
} 

이 기본적으로 전달 된 $ CID를 기반으로 고유 ID를 설정하면 쉽게 스타일을 할 수 있도록 코드는 형태로 각 요소에 클래스를 추가합니다.. 좀 더 견고한 솔루션이 가능할 것이라고 확신하지만 이것이 기본 아이디어입니다. Drupal에서 테스트되었습니다.

1

$element['#attributes']['id']을 설정할 수 있으며 이는 양식 필드에 적용됩니다. 그러나 나머지 렌더링 파이프 라인은 다른 곳에서 ID를 읽으므로 레이블과 #states이 Drupal 7에서 중단됩니다. 그러므로 레이블과 #states이 계속 작동하려면 ID를 $element['#id'] (대신 문서 API가 내부적으로 ID를 감시하는 방법 인 문서화되지 않은 속성)으로 설정하십시오.

충돌이 없는지 확인하기 위해 ID를 drupal_html_id까지 전달해야합니다.

관련 문제