2012-02-28 2 views
0

Im는 cakephp에 초보자이고 PHP의 경험이 있습니다. Ive는 cakephp 1.3을 사용했고 cakephp 2.06 atm을 사용하고 있습니다.사용자 등록 cakephp 2?

나는 저를 괴롭히는 질문이 있습니다.

  • 고객
  • 소매
  • 제조업체

3 사용자가 다른 분야 뭐죠있을 수 있음을 감안할 때 :

나는 사용자의 3 가지 유형의 사용자 등록 시스템을 만들려면 cakephp로 이것을하는 가장 좋은 방법은?

  1. 는 사용자 테이블에 필요한 모든 필드를 작성하고 내가 확인하고 문의 할 수있는 /이 필요한 데이터를 표시하기위한 (사용자 유형을 설정하는 필드) 것을 사용합니다.

  2. 각각에 대해 3 개의 테이블을 만들고 이들을 연결하는 외래 키가 있어야합니다. (복잡한 것처럼 보입니다)

+1

데이터베이스의 질문이 더 많아 보입니다. 좋은 성능을 위해 첫 번째 방법을 사용할 수 있습니다. 세 가지 유형의 사용자 모두에 대해 동일 할 수있는 필드가있는 표 하나만 사용할 수 있습니다. –

답변

1

적어도 모든 로그인 정보 (사용자 이름/비밀번호)를 사용자 테이블에 보관하고 싶습니다. 각 사용자 유형에 다소 겹치는 데이터가 있다고 가정하면 users 테이블 (또는 관련 '프로파일'테이블)의 모든 필드를 유지하는 것이 좋습니다.

데이터를 분리하려면 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 문을 사용하여 관련 필드 만 표시 할 수도 있습니다.

이렇게 할 수있는 방법은 여러 가지가 있지만 질문에 대한 주된 대답은 - 저장하려는 데이터가 크게 다를 경우가 아니면 같은 테이블에 보관하는 것이 가장 좋습니다. 사용자 이름/비밀번호 또는 이메일/비밀번호를 사용자 테이블에 보관하십시오.