在頁面定義 $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;
}
var $rolesNameField = 'role_title';fetchRoles($user) 應回傳 role_title 欄位值rolename