2013-04-20 85 views
0

這應該很簡單,但我花了一個多小時試圖找出它,所以感謝您的幫助。CakePHP:在主控制器中使用插件控制器的功能

我有一個CakePHP的插件,Usermgmt,與設在這裏控制器:

./app/Plugin/Usermgmt/Controller/UsersController.php 

我想使用類似我的主控制器的一個調用的函數,userIdFromUsernameAndPassword(),在控制器:

$userID = $this->UsersController->userIdFromUsernameAndPassword('[email protected]','pass'); 

我需要導入/包含/初始化才能使其工作?

我試過各種導入語句,如App::uses('UsersController', 'Usermgmt.Controller');在我的文件頂部,但沒有得到任何地方。

謝謝!

回答

2

簡答:使用OOP並擴展其他控制器。也瞭解MVC。你不應該在另一個控制器內部使用控制器的方法,在CakePHP中,這應該作爲一個組件來完成。它們可以在控制器之間共享。 Check the CakePHP Book

此外,插件的名稱和方法名稱表明這是一個糟糕的插件。這聽起來像有人不知道CakePHP的Auth組件。再次檢查AuthComponent的書。 You want a custom authentication adapter

如果用戶登錄,您可以通過調用$ this-> Auth-> user('id')來獲得其ID。閱讀關於認證的章節。如果你想要一個正確完成的用戶插件檢查出來:CakeDC Users

+0

我對OOP和MVC的知識來自Objective-C和Python,所以我爲這些方法和PHP之間的差異掙扎了一下。一年前,當我開始這個項目時,我看着CakeDC用戶,但是我無法得到它的工作,或者還沒有完全準備好。我知道如何通過調用$ this-> Auth-> user('id')來獲取用戶ID,但這是針對API的,因此用戶不會登錄(用戶/傳遞與Post請求一起傳遞) 。 – Nick 2013-04-20 02:11:01

+0

我知道從另一個控制器中調用一個控制器並不是在這裏執行任何操作的正確方法。那麼以正確的方式回覆用戶/通過Post調用,檢查這些值,並從不同的模型給他們提供信息? – Nick 2013-04-20 02:12:52

+2

@ nickv2002在我看來'userIdFromUsernameAndPassword()'應該是'User' * model *的方法,例如訪問它應該像'ClassRegistry :: init('Usermgmt.User') - > userIdFromUsernameAndPassword('[email protected]','pass');''你不應該使用另一個**控制器**來獲取數據來自MVC中的** Model **。或者,如果包含在* Component *中,則按照建議提供可重用的代碼。 – thaJeztah 2013-04-20 07:59:07