2013-01-12 109 views
0

我們已經決定使用CakePHP作爲登錄系統和前端數據庫UI,因爲遵循嚴格的約定時,所有automagic都可以使用,我知道Codeigniter和CI,您可以擴展系統控制器system/core/Controller.php以處理認證可擴展的CakePHP登錄系統

class AdminController extends CI_Controller { 

    protected $user; 

    public function __construct() { 

     parent::__construct(); 

     $this->load->model('AdminModel'); 

     $this->user = $this->AdminModel->user()->row(); 
     $data->user = $this->user; 
     $this->load->vars($data); 
    } 
} 

然後通過擴展其作爲一個應用程序的控制器,$user變爲可用全局和AdminController已經延伸的是CI_Controller。

class Admin extends AdminController { 

    public function __construct() { 

     parent::__construct(); 

    } 

    function index(){ 

     //$user is global since it's extending AdminController 

     $this->data['user'] = $user->someItem; 

     //load view etc.. 

    } 
} 

我不知道這是否是使用CakePHP正確的做法,是有那個impliment AUTOMAGIC scallable登錄系統,一個普遍的共識/最佳做法?

在此先感謝

+0

你有沒有考慮[Symfony的(http://symfony.org)?特別是,我正在考慮[Sonata](http://sonata-project.org/about)和[packagist通過'composer'](https://packagist.org/search/?search_query%5Bquery%5D= symfony)非常漂亮。不是CakePHP不是太漂亮... –

回答

1

你可以使用AuthComponent::user()在任何你需要的細節,或AuthComponent::user('id')你需要一個特定的領域。

+0

謝謝,我可以從AppController的擴展控制器定義AuthComponent :: user()嗎?我想在應用程序的特定區域擴展MyController而不是AppController。 – dcd0181

+0

您應該查看[auth]的文檔(http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html),因爲它很容易擴展。 – dogmatic69

1

是的,你可以做到這一點。例如,這將工作:

class AppController extends Controller 
    class CustomAppController extends AppController 
     class BikesController extends CustomAppController 

其實這是插件的實現,你可以看看這裏:

http://book.cakephp.org/2.0/en/plugins.html

同樣的事情發生在插件,每個插件有一個自定義PluginNameAppController其中所有的插件控制器都將擴展。

這可能是有趣採取的插件來看看反正因爲功能項目中的明確分離。