2011-02-18 4 views
6

사용자가이 경우 사용자 엔티티에서 단일 필드를 업데이트 할 수 있도록 모듈을 만들고 있습니다.적절한 유효성 검사를 호출하는 단일 필드의 값을 업데이트하는 방법

아래의 코드는 내가 처음

global $user; 
$account = user_load($user->uid); 
$edit = (array) $account; 
$edit['field_lastname']['und'][0]['value'] = 'test'; 
user_save($account, $edit); 

그러나이 드루팔의 다른 곳에서 정의 된 필드 유효성 검사를 바이 패스 모듈의 다른 요소는 작업을 진행하고 테스트하기 위해 사용 된 방법의 예입니다. 나는 다른 곳에서 작성된 검증을 재현하고 싶지 않습니다. 이것은 드루팔 (Drupal) 방식이 아닙니다!

내 질문은 : Drupal 7에서 단일 필드의 값을 업데이트하기 위해 호출 할 수있는 함수가 있습니까? 이러한 함수가 적절한 캐시를 지우고 필드 유효성 검사 등을 호출한다고 상상해 봅니다.

솔루션은 현재 사용자 개체를 기반으로하는 솔루션과 완전히 다릅니다. 나는 단지 API의 적절한 기능을 찾지 못한다. 실제로 저장 기능 만 찾고 있다는 사실이 문제인지, 그리고 전에 필요한 다른 몇 가지 단계가 있는지 궁금합니다.

감사의 뜻을 표합니다.

답변

1

drupal_form_submit 기능을 확인하십시오. 그것은 당신이 코드에서 양식을 제출하게합니다. 이 경우이를 사용자 편집 양식에 사용하면 적절한 유효성 검증이 실행됩니다.

+0

감사합니다. Matt. 나는 그런 것을 사용하려고 생각하고있었습니다. 이상적으로, 나는 하나의 필드에 대해 단일 값을 저장해야한다고 생각했다. 내가 틀렸다고 정정 해 주지만 양식의 제출 및 유효성 검사 기능을 다시 사용하면 필요한 모든 정보를 양식에 전달하지 않아도됩니까? - 같은 방식으로 내 예제에서는 변경 및 저장하기 전에 원래 사용자 객체를 실행해야했습니다. 필드 데이터 자체를 저장하기 위해 Drupal 함수가 필요할 것으로 기대하고있었습니다. 아마도 나는 너무 많이 기대하고 있으며 폼 제출에 묶여 있어야합니다. – joevallender

+1

코드 샘플에서 지정한 방식대로 수행하고 유효성 검사 함수를 직접 호출 할 수 있습니다. 그렇지 않으면 유효성 검사를 호출하는 Form API이므로 Form API를 우회하여 유효성 검사를 건너 뜁니다. –

+0

다시 한 번 감사드립니다. 나는 거기에없는 기능을 찾고 있다고 생각한다 ;-) Field API를 읽고 (다시 읽는) 계속해서 내가 찾고있는 것을 정확하게 찾으면 다시 게시 할 것이다. 당신 말이 맞아요, 제가 그 순간에 두 가지 방법을 모두 가질 수있는 것처럼 보이지 않습니다. 다시 건배 – joevallender

관련 문제