2016-11-11 70 views
1

我想用一個獲批准的用戶對用戶進行批量更新,表使用VBO在Drupal更新的自定義用戶字段

field_user_status_value 
----------------------- 
entity_type, entity_id, field_user_status_value 

的ENTITY_ID是不存在於表中的用戶ID,下面是自定義模塊我寫的更新表:

function bulkapprove_action_info() { 
    return array(
    'bulkapprove_action_callback_name' => array(
     'type' => 'user', // Can be file, term, user, etc. 
     'label' => t('Approve User'), 
     'configurable' => FALSE, // Doesn't need config form 
     'behavior' => array('view_property'), // Uses view access rights , 
     'pass rows' => TRUE, 
     'triggers' => array('any'), // Works always 
    ), 
); 
} 

function bulkapprove_action_callback_name($entity, $context) 
{ 
    db_update('field_data_field_user_status')->fields(array('field_user_status_value' => 'Approved'))->condition('entity_id', $context->entity_id)->execute(); 
} 

但它不是在這個表中插入值

回答

1

在Drupal的,你不想直接更新數據庫字段,除非你創建的TA BLE。 Drupal的內部API提供了一系列工具,以確保您正確更新值,並且所有支持模塊都會根據需要通過鉤子系統得到變更通知。

在這種情況下,回調會獲得實際的實體針對(在這種情況下爲用戶對象)運行您的操作。您想對該實體採取行動,然後保存該實體。

function bulkapprove_action_callback_name($entity, $context) 
{ 
    $entity->status = 1; 
    entity_save('user', $entity); 
} 
相關問題