2011-04-18 2 views
3

그래서 hook_field_schema 컬럼을 정의하고 hook_field_widget_form을 설정하고 모든 컬럼 값을 올바르게 저장했습니다.Drupal : hook_field_widget_form에서 필드 세트를 사용하는 방법

그러나 필드 세트 안에 두 개의 필드를 넣으면 해당 값은 저장되거나 업데이트되지 않습니다. #tree => FALSE로 설정해 보았는데 그 중 하나가 작동하지 않습니다.

무엇이 누락 되었습니까? 그냥 지원되지 않습니까? field_alter hook을 사용하여 fieldset으로 옮겨야합니까?

답변

3

동일한 문제가있어서 해결책을 찾을 수 없습니다. 많은 것을 시도한 후에, 그것은 비논리적 인 것처럼 단순한 것으로 판명되었습니다. 글쎄, 드루팔 (Drupal newbie)의 눈에는. 나는 다음 행을 발견 다른 시나리오를 많이 시도 후

$element['mymodulefieldset']['fieldname'] = array(
    '#title' => "Field title", 
    '#type' => 'textfield', 
    '#default_value' => '', 
); 

다음 FIELDSET에

$element['mymodulefieldset'] = array(
    '#title' => 'Fieldset title', 
    '#type' => 'fieldset', 
); 

및 추가 필드 :

은 처음 엔이 (벗었 버전) 같은 것을했다 코드가 (일종의) 일을했다. 대신 FIELDSET 삽입, I 이런 FIELDSET로 소자를 온 :

$element += array(
    '#type' => 'fieldset', 
    '#tree' => true 
); 
이어서

I의 요소에 필드 추가 :

$element['fieldname'] = array(
    '#title' => "Field title", 
    '#type' => 'textfield', 
    '#default_value' => '', 
); 

NB : #title 같은 일부 변수 및 #weight는 제어 "홈»행정»구조»콘텐츠 유형»[귀하의 콘텐츠 유형]"으로, 다른 항목 (예 : #collapsible 및 #collapsed)을 여기에서 정의 할 수 있습니다.

희망이 도움이됩니다.

+0

나는이 대답을 투표 해요,하지만 이것은 나의이었다 발행물. Fieldset 내부에 양식 필드가 있고 내부에 양식 필드가 있고 내부에있는 양식 필드가 저장되지 않았습니다. – Karl

3

나는 그것이 오래된 문제라는 것을 알고 있지만,이 문제에 대한 해결책이 있습니다. in this artice으로 설명하고, #process 부분은 필드를 올바르게 저장하는 데 사용됩니다.

편집 : @alexkb의 설명에 따르면 기사 작성자는 자신의 custom field sample을 업데이트하고 #process hack을 삭제했습니다. 더 나은 해결책을 얻으려면 GitHub 코드를 사용하십시오.

+1

링크 된 기사에서 #process에 대해 이야기하지만 작성자가 [github의 샘플 코드] (https://github.com/tarmstrong/poutine_maker/blob/master/poutine_maker.module)를 다음과 같이 업데이트했습니다. hook_field_presave()를 사용하십시오 - 이것은 #process 해킹보다 훨씬 더 나은 접근법입니다. 그래도 해결책을 찾지 못했습니다. 해결책을 찾지 못했습니다. 감사합니다. – alexkb

0

physical module을 살펴보십시오.

$element['#type'] = 'fieldset' 

당신이 가진 서브 필드를 정의 할 수 있습니다 : 기본적으로 그것을 할 확실히 FIELDSET 정보를 검색하는 다른 사람에게 도움이 될 것입니다 때문에

$element['subfield'] = array (...);