drupal7中利用profile2的api對使用profile2字段的對象進行操做|durpal profile2 api

注:本教程純手打原創,若有雷同,一定抄襲個人。本文版權歸屬yoqu,若是有哪位轉載請署名做者。php


最近公司有個項目,由我作用戶操做這一塊,因爲drupal自帶的profile不是很友好,因此用戶屬性是利用profile2進行定義的。我以其中屬於哪一個機房的屬性來進行講解吧。數組

profile的增刪改查操做

1.查操做

$user=user_load($uid);
    $student=profile2_load_by_user($user,'student');

這個函數官方有文檔,經過用戶對象返回用戶的profile2的對象,固然可能用戶定義了幾個profile。咱們用到的是student這個profile。
而後利用field_get_items()得到指定的字段
例如機房的機器名叫作machine_room.
使用bash

$machine_room=field_get_items('profile2',$student,'field_machine_room'));

結果返回的是一個數組,直接取出你想要的值就能夠進行其餘操做了。markdown


2.增操做

增長操做指的是已有用戶,可是用戶沒有添加profile對象。這一步我研究了很久,大概按照個人理解是這樣的。
1.先取出一個用戶函數

$account=user_load($uid);

2.獲得profile。學習

$profile = profile2_load_by_user($account,'student');

3.判斷若是不存在就新建ui

if (!$profile) {
        建立一個新的profile
         $profile = profile_create(array(
         //設置profile的類型
         'type'=>'student',
         //指定對哪一個用戶進行操做
         'uid'=>$account->uid,
         //這一步對機房賦值001我的感受我這裏太麻煩,不知能夠簡單點不。
         'field_machine_room'=>array('und'=>array('0'=>array('value'=>'001',),),),
         )
         );
    }

4.修改值以後進行一個保存spa

profile2_save($profile);

3.改操做

步驟和2差很少,不過不用判斷是否存在我就再也不細說code

4.刪除操做

profile2_delete(Profile $profile);

調用刪除函數,官方給的函數是這樣的:對象

function profile2_delete(Profile $profile) {
  $profile->delete();
    }

經過查操做裏面的profile2_load_by_user獲得一個profile對象,而後調用profile2_delete函數便可進行刪除操做。


好了,本次學習到此結束,歡迎和你們一塊兒交流經驗。若是有什麼問題能夠發郵件問我,個人郵箱yoqulin@qq.com,也能夠私信我。

相關文章
相關標籤/搜索