2013-06-04 2 views
0

나는 CakePHP에 사이트를 만들고 있는데, 같은 컨트롤러와 모델을 사용하여 같은 양식에 로그인 양식과 로그인 양식을 원합니다.CakePHP와 같은 페이지에 여러 폼의 유효성 확인

그래서 UserLoginForm 및 UserRegisterForm이라는 두 개의 새로운 모델을 만들어 사용자 모델을 확장하고 모델의 각 양식에 대한 유효성을 검사합니다.

문제는 CakePHP에서 데이터가 있어야하는 곳의 데이터베이스 필드 이름과 일치하는 양식 입력 이름을 사용하기를 원합니다. 예를 들어 로그인 양식의 전자 메일 필드는 전자 메일 필드와 동일한 이름을 갖습니다. 가입 양식을 작성하여 두 양식에 유효성 검사 오류가 나타나게했습니다. 저는 Cake에서 아주 새로워서이 문제를 해결하는 방법을 찾는 데 어려움을 겪고 있습니다.

미리 감사드립니다.

답변

3

일치하는 테이블에서 모델을 레코드로, 컨트롤러를 작업 요청자로 생각해야합니다.

├── Controller/ 
│   ├── UsersController.php 
└── Model/ 
   ├── User.php 

The Controller is named after the main model they handle

이 케이크의 다른 점으로,이 변경 될 수 있지만 더 나은 가독성과 후자의 유지 보수를 위해 그것을 피할 :

이 특별한 경우

.

User 모델의 유효성 검사는 모두 users 테이블의 레지스터를 통해 이루어지기 때문에 유효합니다. 가장 가능성이 높은 곳은 callback method입니다.

각 양식에 대해 사용자 지정 유효성 검사가 필요하므로이 책의 데이터 유효성 검사 섹션에서 "Dynamically change validation rules"을 읽어야합니다.

혼란 스러우면 뒤로 물러나서 reading this으로 시작하여 the blog tutorial으로 시작하십시오.

일단 이러한 개념이 해결되면 CakePHP를 좋아할 것입니다.

+0

답변 주셔서 감사합니다, David! 그러나 두 양식의 필드 이름이 충돌 할 때이 작동합니까? 나는이 튜토리얼을 따라 왔지만 두 형식의 이름이 같을 때는 제대로 작동하지 않는다. http://bakery.cakephp.org/articles/RabidFire/2010/06/26/multiple-forms- 페이지 당 동일한 모델 –

+0

여러 가지 방법으로 작업 할 수 있습니다. 그 중 하나는 각 양식에 컨트롤러 작업을 사용하는 것이므로 논리를 분리 할 수 ​​있습니다. 또한 각 양식 사이의 필드의 차이를 사용하여 어떤 종류의 유효성 검증을 사용해야하는지 판별 할 수 있습니다. – davidmh

+0

각 양식에 다른 컨트롤러 조치를 사용하고 있습니다. 등록 양식이 register() 메소드에 게시되고 login()에 로그인됩니다. 필드는 formhelper에 의해 생성되므로 거의 동일합니다. 필드를 다른 데이터베이스 테이블로 다시 매핑하는 기능이 없습니다. 그러나이를 발견했습니다. http://bakery.cakephp.org/articles/dardosordi/2008/07/29/multivalidatablebehavior-using-many-validation-rulesets- 모델 별 -이 방법이 효과적일까요? –

관련 문제