Drupal 7 Drupal 7以编程方式加载概要文件2

Drupal 7 Drupal 7以编程方式加载概要文件2,drupal-7,profile,hook-form-alter,Drupal 7,Profile,Hook Form Alter,我定义了两个profile2配置文件-主配置文件和客户配置文件。此外,我还有一个节点类型,称为Customer 创建新客户节点时,我希望加载自定义的_配置文件表单。其思想是同时创建一个节点和一个概要文件 我知道这绝对是一个hook\u form\u alter解决方案,但有人能告诉我如何在创建或编辑客户节点时以编程方式加载配置文件。即使您能够加载客户配置文件表单,您也需要单独处理这些值,因为它们是两个不同的节点 我建议在customer节点表单中捕获这些字段,然后根据这些值以编程方式创建cust

我定义了两个profile2配置文件-主配置文件和客户配置文件。此外,我还有一个节点类型,称为Customer

创建新客户节点时,我希望加载自定义的_配置文件表单。其思想是同时创建一个节点和一个概要文件


我知道这绝对是一个hook\u form\u alter解决方案,但有人能告诉我如何在创建或编辑客户节点时以编程方式加载配置文件。

即使您能够加载客户配置文件表单,您也需要单独处理这些值,因为它们是两个不同的节点

我建议在customer节点表单中捕获这些字段,然后根据这些值以编程方式创建customer_概要文件

如果您想要获取profile2表单本身,那么可以使用

module_load_include('inc', 'profile2_page', 'profile2_page');
$profile2 = profile2_by_uid_load($uid, 'seeker_profile');
$entity_form = entity_ui_get_form('profile2', $profile2, 'edit');

然后将其添加到要放置它的表单中。

我也需要在用户页面上创建一个自定义选项卡,并在其中加载user profile2表单

以下是我如何做到这一点的快照代码:

MYMODULE.module

MYMODULE_profile2_MYPROFILE2TYPE.inc


希望有帮助。

您可以使用这些功能加载配置文件类型和数据

$types = profile2_get_types();
profile2_load_by_user($account, $type_name = NULL)
例如:

$types = profile2_get_types();
    if (!empty($types)) {
        foreach ($types as $type) {
            $profile = profile2_load_by_user($uid, $type->type);
        }
    }

您可以使用profile2_load_by_user()加载完整的配置文件数据; 参数如:-

profile2_load_by_user($account,$type_name)
$account: The user account to load profiles for, or its uid.
$type_name: To load a single profile, pass the type name of the profile to load
所以代码像贝娄一样

$account->uid = $existingUser->uid;
$type_name = 'user_about';
$profile =  profile2_load_by_user($account, $type_name);
//$profile variable have full data of profile fields
//changing data profile2 fields 
if(isset($_POST['field_user_first_name'])&& !empty($_POST['field_user_first_name'])){
    $profile->field_user_first_name['und'][0]['value'] = $_POST['field_user_first_name'];
}
profile2_save($profile);

在创建新的配置文件时,只有在手动保存完成后,Profile2字段才可见。

为了自动创建profile2对象,我们使用规则模块
步骤
1) 转到Drupal admin/config/workflow/rules
2) 创建新规则
3) 提供名称并在“保存新用户帐户后”的“反应/事件”中选择“
4) 操作,>>添加操作>>执行自定义PHP代码
5) 插入php代码

$profile=profile\u创建(数组('type'=>'profile2 type machine name','uid'=>$account->uid));
档案2_保存($profile);

6) 保存>>保存更改。
这将在创建新用户时创建profile2字段。