在Drupal中使用VBO来更新自定义用户字段

时间:2016-11-11 13:07:09

标签: 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 个答案:

答案 0 :(得分:1)

在Drupal中,您不希望直接更新数据库字段,除非您创建了表。 Drupal的内部API提供了一系列工具,可确保您正确更新值,并通过挂钩系统根据需要通知所有支持模块的更改。

在这种情况下,回调将获取实际实体以对其进行操作(在本例中为用户对象)。您希望对该实体执行操作,然后保存该实体。

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