목록 필드의 허용 값을 프로그래밍 방식으로 업데이트하는 방법은 무엇입니까?


10

Drupal 7에서 Profile2 계정에 대한 선택 목록을 만들었습니다. 허용 된 값 목록에서 일부 값을 추가했습니다. 이제 내가하고 싶은 것은 프로그래밍 방식으로 해당 목록의 값을 업데이트하는 것입니다 (추가, 삭제 또는 업데이트). 이 업데이트가 데이터베이스에 커밋되기를 원하므로 form_alter를 사용하고 싶지 않습니다. 내 문제는 이러한 값이 데이터베이스에 저장된 위치 또는 Profile2에서 해당 값을 가져 와서 업데이트 한 다음 저장하는 방법을 찾을 수 없다는 것입니다.

이 특정 문제에 대해 Google이 높고 낮았으며이를 수행하는 방법에 대한 답변을 찾을 수 없습니다. 누군가 나를 도울 수 있기를 바랍니다.

감사.

답변:


23

라인을 따라 뭔가 ...

// Get the field info
$info = field_info_field('field_some_field');

// Get a reference to the values
$values = &$info['settings']['allowed_values'];

// Manipulate the values in some way, e.g.
$values['new_value'] = 'New Value';

// Save the field
field_update_field($info);

이 코드를 어디에 추가해야합니까?
Shivam

@shivam 생성 한 사용자 지정 모듈에이 코드를 추가해야합니다.
user5013

이것을 한 번만 실행하려면 hook_update_N에 넣으십시오.
Achraf JEDAY

또한 필드가 이미 사용중인 경우 이전 허용 값을 변경하지 않습니다.
Achraf JEDAY

3

allowed_values_function콜백과 함께를 사용하는 것이 좋습니다 .

'settings' => array(
  'allowed_values' => array(),
  'allowed_values_function' => '_my_feature_module_options_list',
),

엔터티 필드에 대한 동적 허용 값 옵션 만들기를 참조하십시오 .


더 완전한 답변이 도움이 될 것입니다. 참조하는 코드는 훌륭하고 허용되는 답변과 비슷하지만 기능 모듈과 함께 사용하도록 작성되었습니다.
Johnathan Elmore
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.