我是cakepp的新手,对php有一定的经验。我用的是1.3,现在用的是2.06大气压。
我有一个问题困扰着我;
我想为3种类型的用户创建一个用户注册系统:
- 客户
- 零售商
- 制造商
考虑到所有3个用户可能都有不同的字段,使用cakepp最好的方法是什么?
-
在users表中创建所有需要的字段,并使用它(带有一个用于设置用户类型的字段),在那里我可以检查并请求/显示所需的数据。
-
创建3个表,每个表一个,并有一个外键链接它们。(看起来很复杂)
您至少需要将所有登录信息(用户名/密码)保存在users表中。假设每个用户类型都有一些重叠的数据,那么您可能可以保留users表(或相关的"profiles"表)中的所有字段。
如果你想把数据分开,你可以有profile_customers
、profile_retailers
。。。等等。但我只有在几乎所有不同的数据的情况下才会这么做——我想大多数人都会有"电话"、"电子邮件"。。。etc
为每种类型创建不同注册表的最简单方法就是根据用户类型链接到您的注册表:
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语句仅显示相关字段。
有很多方法可以做到这一点,但你的问题的主要答案是——除非你想存储的数据差异很大,否则最好把它们放在同一张表中——当然,至少要把用户名/密码或电子邮件/密码放在用户表中。