2011-02-18 17 views
6

Kullanıcıların, bu durumda kullanıcı varlıklarını tek bir alanı güncelleştirmelerine izin vermek için bir modül yapıyorum.Tek bir alanın uygun doğrulamayı çağırmak için değeri nasıl güncelleştirilir

Aşağıdaki kod başlangıçta

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

Bununla birlikte, bu Drupal başka tanımlanan herhangi bir alan doğrulama atlar modülün diğer elemanlarını bu çalışma ve test etmek için kullanıyoruz yöntemin bir örneğidir. Başka yerde yazılmış herhangi bir doğrulama yapmak istemiyorum - bu Drupal yol değil!

Soruma şudur: Drupal 7'de tek bir alanın değerini güncellemek için çağrılabilecek bir işlev var mı. Böyle bir fonksiyonun uygun önbellekleri temizleyeceğini, alanların doğrulanmasını vb. Ele alacağını hayal ediyorum.

Çözümün mevcut kullanıcı nesnesine göre tamamen farklı olacağını biliyorum. Sadece hayatımın API'da uygun işlevi bulmasını sağlayamam. Tek başına bir kaydetme işlevini aramamın aslında sorun olup olmadığını merak ediyorum - ve daha önce gelen diğer gerekli adımlar da var.

Her türlü yardım minnettarlıkla takdir edilir.

cevap

1

drupal_form_submit işlevine bakın. Formları koddan göndermenizi sağlar. Bu durumda, daha sonra uygun doğrulama işlemini gerçekleştirecek olan kullanıcı düzenleme formuna kullanabilirsiniz.

+0

Teşekkürler Matt. Böyle bir şey kullanmayı düşünüyordum. İdeal olarak, tek bir alan için tek bir değer kaydetmeyi umuyordum. Eğer yanılıyorsam düzeltin, ancak formların gönderme ve onaylama işlevlerini yeniden kullanmak için gerekli tüm bilgileri forma iletmem gerekli olmaz mı? - Aynı şekilde benim örneğim, orijinal kullanıcı nesnesini değiştirmeden ve kaydetmeden önce ateşlemeyi gerektirdi. Alan verilerini kendisinin saklayacağı bir Drupal işlevi olabileceğini umuyordum. Belki de çok fazla umuyorum ve form gönderimine bağlı olarak – joevallender

+1

'a bağlı olmanız gerekir. Kod örnekleminizin belirttiği şekilde bunu yapabilir ve doğrulama işlevlerini kendiniz arayabilirsiniz. Aksi halde, doğrulama işlemini çağıran Form API'sı olur, bu nedenle Form API'sını atlayarak, doğrulamayı atlayabilirsiniz. –

+0

Tekrar teşekkürler Matt. Ben orada olmayan bir özellik arıyorum düşünüyorum ;-) Ben tam olarak ne aradığımı bulursanız Field API okuma ve (yeniden okuma) devam edecek ve geri gönderiyorum. Haklısın, şu anda her ikisine de sahip olabileceğim gibi görünmüyor. Tekrar alkış – joevallender