用户注册cakephp 2?

用户注册cakephp 2?,php,cakephp,user-registration,Php,Cakephp,User Registration,我是cakephp的新手,对php有一些经验。我使用CakePHP1.3,am使用CakePHP2.06 atm 我有一个问题困扰着我 我想为3类用户创建一个用户注册系统: 顾客 零售商 制造商 考虑到所有3个用户可能都有不同的字段,使用cakephp的最佳方法是什么 在users表中创建所需的所有字段,并使用该字段(以及用于设置用户类型的字段),我可以在其中检查和请求/显示所需的数据 为每个表创建3个表,并使用一个外键链接它们。(似乎很复杂) 您至少要在users表中保留所有登录信息(用户

我是cakephp的新手,对php有一些经验。我使用CakePHP1.3,am使用CakePHP2.06 atm

我有一个问题困扰着我

我想为3类用户创建一个用户注册系统:

  • 顾客
  • 零售商
  • 制造商
考虑到所有3个用户可能都有不同的字段,使用cakephp的最佳方法是什么

  • 在users表中创建所需的所有字段,并使用该字段(以及用于设置用户类型的字段),我可以在其中检查和请求/显示所需的数据

  • 为每个表创建3个表,并使用一个外键链接它们。(似乎很复杂)


  • 您至少要在users表中保留所有登录信息(用户名/密码)。假设每个用户类型都有一些重叠的数据,您可以保留用户表(或相关的“profiles”表)中的所有字段

    如果您希望将数据分开,那么您可以拥有
    profile\u客户
    profile\u零售商
    …等等。但我只会在几乎所有数据都不同的情况下这样做——我想大多数都会有“电话”、“电子邮件”等

    为每种类型创建不同注册表的最简单方法是根据用户类型链接到注册表:

    http://www.mysite.com/users/register/customer
    
    然后,在控制器中:

    function register($type = null) {
        //...
        switch($type) {
            case 'customer':
                $this->render('registration_customer');
                break;
            case 'retailer':
                $this->render('registration_retailer');
                break;
            case 'manufacturer':
                $this->render('registration_manufacturer');
                break;
        }
        //...
    
    然后,您可以为每个注册页面创建一个单独的CTP文件。或者,如果它们重叠很多,您也可以将一个变量从控制器传递到视图,并使用if语句仅显示相关字段


    有很多方法可以做到这一点,但你的问题的主要答案是——除非它们在你想要存储的数据上有很大的差异,可能最好将它们保存在同一个表中——并且至少确保将用户名/密码或电子邮件/密码保存在用户表中。

    似乎更像是数据库的问题,我相信,为了获得良好的性能,您可以使用第一种方法,即只有一个表中的字段对于所有三种类型的用户是否都相同。