2016-03-01 174 views
0

我已經添加了4個列到我的CakePHP用戶表中,並試圖找出如何將這些列包含在$this->Auth->user()對象中。CakePHP - 將自定義值添加到用戶對象

我已經將列信息添加到我的用戶模型和實體,但仍然沒有喜悅。目前我的用戶對象看起來像這樣;

[ 
    'id' => (int) 1, 
    'username' => 'admin', 
    'name' => 'Web Admin', 
    'email' => '[email protected]', 
    'role' => 'admin', 
    'created' => object(Cake\I18n\Time) { 

     'time' => '2016-02-09T16:04:46+00:00', 
     'timezone' => 'UTC', 
     'fixedNowTime' => false 

    }, 
    'modified' => object(Cake\I18n\Time) { 

     'time' => '2016-02-12T08:53:16+00:00', 
     'timezone' => 'UTC', 
     'fixedNowTime' => false 

    } 
] 

這哪裏是對象創建,是有辦法,我可以加我的自定義值給它,而無需編輯核心CakePHP的文件?

感謝您的幫助。

+0

等待ndm檢查他的最新問題列表.....;) – JayIsTooCommon

+0

你試過打開調試嗎? – Holt

回答

1

默認情況下,內置的認證程序將獲取表模式中的所有字段。

您可能只是忘記清除緩存(tmp/cache/models),無論何時更改模式,您都應該這樣做。

如果想要指定正在提取哪些字段,則需要定製查找器。

Cookbook > Controllers > Componenents > Authentication > Customizing Find Query

$this->loadComponent('Auth', [ 
    'authenticate' => [ 
     'Form' => [ 
      'finder' => 'auth' 
     ] 
    ], 
]); 

在你UsersTable

public function findAuth(\Cake\ORM\Query $query, array $options) 
{ 
    return $query 
     ->select(['id', 'username', 'password', 'column_x', 'coulumn_y']); 
} 

應當指出,認證所需的字段,必須包含,即像usernamepassword

+0

清除緩存做到了,謝謝ndm。 – JayIsTooCommon

相關問題