首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Fleaphp rolesNameField Bug 修正:關聯角色名稱欄位無法正確讀取

     編輯:PHP 綜合知識

問題現象

在頁面定義 $rolesNameField 但 fetchRoles() 仍使用預設值 'rolename',導致角色名稱讀取失敗。

原始碼片段

function fetchRoles($user) {
    if ($this->existsLink($this->rolesField)) {
        $link =& $this->getLink($this->rolesField);
        $rolenameField = $link->assocTDG->rolesNameField; // 讀取關聯模型定義
    } else {
        $rolenameField = 'rolename';
    }
    // ... 後續使用 $rolenameField
}

根因

$link->assocTDG->rolesNameField 可能未設定(為 null/空字串),導致後續邏輯失效。

修正方法

在讀取後加入**預設值回退**:

$rolenameField = $link->assocTDG->rolesNameField;
$rolenameField = $rolenameField ? $rolenameField : 'rolename'; // 新增這行

完整修正後片段

function fetchRoles($user) {
    if ($this->existsLink($this->rolesField)) {
        $link =& $this->getLink($this->rolesField);
        $rolenameField = $link->assocTDG->rolesNameField;
        $rolenameField = $rolenameField ? $rolenameField : 'rolename'; // 修正
    } else {
        $rolenameField = 'rolename';
    }

    if (!isset($user[$this->rolesField]) || !is_array($user[$this->rolesField])) {
        return array();
    }
    $roles = array();
    foreach ($user[$this->rolesField] as $role) {
        if (!is_array($role)) {
            return array($user[$this->rolesField][$rolenameField]);
        }
        $roles[] = $role[$rolenameField];
    }
    return $roles;
}

驗證方式

  1. 在關聯 TDG 類別中定義 var $rolesNameField = 'role_title';
  2. 呼叫 fetchRoles($user) 應回傳 role_title 欄位值
  3. 未定義時回退預設 rolename
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved