2016-04-05 30 views
0

CakePHP的如何讓CakePHP的ID從數據庫表中的值

我有問題,從表

我的表名爲"users"得到的值id並有ID PK(int),username(txt) name(txt)

我已經試過

$this->users->read('users.id)

要獲取用戶ID,但它不起作用。

我也試過

$this->request->session()->read('users.id')

我想做出那樣

if($this->users->read('users.id'))==1 

的條件,因爲我與其他ID用戶想隱藏的HTML代碼。 我也嘗試使用類似的東西..... read('users.username')=='admin'但他們不會工作太

正如你看到一個嘗試使用會話()來獲取ID,但不工作

我的登錄功能

public function login() 
{ 
    if ($this->request->is('post')) { 
     $user = $this->Auth->identify(); 
     if ($user) { 

       $this->Auth->setUser($user); 
      return $this->redirect(['controller'=>'Accounts']); 
     } 
     $this->Flash->error('blalalalala'); 
    } 
} 

這是我第一個項目,我cakephp上學,所以你們可以幫我嗎? :) IM弱在PHP


THX的提示,但仍然沒有工作。

我在AppController的過濾器前使用此

$id = $this->Auth->user('id'); // To get user id 
    $this->set('id', $id); 

在功能可按。

和我使用例如if($id==1) .....仍然不工作。 var dump顯示爲空。

我忘了說了,但我有CakePHP 3x version

+1

我不知道你是如何學習其他語言或框架的,如果你嘗試過「試錯」,那麼它一定是一個痛苦的漫長而艱難的經歷。所以我建議你先從基本教程開始,然後是官方文檔的Auth教程:book.cakephp.org它會給你一個適當的框架介紹並解決你的認證相關問題。 – burzum

回答

1

要設置用戶在控制器的任何信息,您可以在beforeFilter方法只是設置用戶信息使用

$this->Auth->user('fieldName'); 

AppController,你需要像如下代碼

$id = $this->Auth->user('id'); // To get user id 
     $this->set('id', $id); 

現在任何看法,你可以申請像

if($id==1) 
--do this-- 

如果你想在任何你可以使用的地方獲取用戶ID,它不允許在cakephp 3中。X

AuthComponent::user('id') 

有關詳細信息,你可以看到doc

+1

應該注意的是,後一種方法在CakePHP 3.x中不起作用,問題可能是(在CakePHP 2.x中沒有'AuthComponent :: identify()'沒有參數)。 – ndm

+0

感謝@ndm爲您提供豐富的評論。我編輯了我的答案。 –

0

你可以嘗試這些:

$this->Auth->user('id'); // for controller action 

OR

$this->Session->read('Auth.User.id'); // for controller and views 

OR

AuthComponent::user('id') // anywhere 
相關問題