Регистрация пользователя на cakephp 2? - PullRequest
0 голосов
/ 28 февраля 2012

Я новичок в CakePHP и имею некоторый опыт работы с PHP. Я использовалakephp 1.3 и использую cakephp 2.06 атм.

У меня есть вопрос, который меня беспокоит;

Я хочу создать систему регистрации пользователей для 3 типов пользователей:

  • клиент
  • Retailer
  • Производитель

Учитывая, что у всех 3 пользователей могут быть разные поля, какой лучший способ сделать это с cakephp?

  1. создайте все поля, необходимые в таблице пользователей, и используйте их (с полем для установки типа пользователя), где я могу проверить и запросить / показать необходимые данные.

  2. создать 3 таблицы по одной для каждой и иметь внешний ключ, связывающий их. (кажется сложным)

1 Ответ

1 голос
/ 28 февраля 2012

Вы по крайней мере захотите сохранить всю информацию для входа в систему (имя пользователя / пароль) в таблице пользователей.Предполагая, что каждый тип пользователя имеет несколько перекрывающихся данных, вы, вероятно, прекрасно сохраните все поля в таблице пользователей (или связанной таблице «профилей»).

Если вы предпочитаете разделять данные, вы могли бы иметьprofile_customers, profile_retailers ... и т. Д.Но я бы сделал это, только если это почти все разные данные - и я предполагаю, что у большинства будет «телефон», «электронная почта» ... и т. Д.

Самый простой способ, который приходит на ум - создать другую регистрационную форму длякаждый тип просто ссылается на вашу регистрационную форму в зависимости от типа пользователя:

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 для отображения только соответствующих полей.

Существует так много способов, которыми это можно сделать, ноосновной ответ на ваш вопрос - если они не сильно различаются в данных, которые вы хотите сохранить, вероятно, лучше всего сохранить их в одной таблице - и наверняка, по крайней мере, сохраните имя пользователя / пароль или адрес электронной почты / пароль в таблице пользователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...