MVC 모범 사례는 모델이 입력/데이터 유효성 검사를 처리해야한다고 명시합니다.ColdFusion Model-Glue를 사용하여 모델에서 데이터 유효성 검사를 어떻게 처리합니까?
component
{
public void function CreateNewUser(string username, string password, string email)
{
// create account
}
}
그런 다음 우리는 그 프로세스 컨트롤러를 가지고 :
Username - not null, not already in DB
Password - not null, alphanumeric only
E-mail - not null, not already in DB, valid e-mail format
우리는 CreateNewUser()
기능과 AccountModel
이 : 이제 우리는 다음과 같은 필드와 제약, 새 사용자 계정을 생성하는 모델을 가지고 있다고 가정 해 봅시다 양식을 게시하고 모델에 계정을 생성하라는 메시지를 전합니다.
component
{
public void function NewUser()
{
var username = event.getValue("username");
var password = event.getValue("password");
var email = event.getValue("email");
var accountModel = new AccountModel();
accountModel.CreateNewUser(username, password, email);
event.addResult("UserCreated");
}
이제 유효성을 추가하고 싶습니다. 사용자가 세 필드 모두에 대한 입력을 제공하지 못하면 응용 프로그램에 사용자에게 세 번의 유효성 검증 오류 메시지가 표시됩니다. 컨트롤러에서 수행하기가 쉽습니다.
// assumes that ValidateInput() is a function on the controller that returns an array
var validationErrors = ValidateInput(username, password, email);
// if there were any validation errors, return a ValidationError result
if (len(validationErrors)
{
event.setValue("validationerrors", validationErrors);
event.addResult("ValidationError");
}
else
{
event.addResult("UserCreated");
}
그리고 뷰는 validationerrors 변수를 가져오고 오류 메시지를 표시합니다.
그러나이 논리는 모델에 있어야합니다. 어떻게해야합니까? 두 가지 방법을 생각해 볼 수 있습니다.
방법 1 : 컨트롤러에서 모델로 이동하십시오. 이제 컨트롤러는 CreateNewUser()
전에 ValidateInput()
을 먼저 호출해야합니다. 프로그래머가 이것을 잊어 버리면 CreateNewUser()
은 유효성 검사 예외를 throw합니다. 단점은 유효성 검사가 필요한 모든 데이터 작업에는 if/else 블록이 필요하다는 것입니다.
방법 2 :ValidateInput()
을 호출하고 CreateNewUser()
을 직접 호출해야합니다. 유효성 검사 오류가있는 경우 예외가 발생하고 오류 메시지 배열이 포함됩니다. 이 방법은 C#에서 작동하지만 ColdFusion은 예외가있는 데이터 반환을 지원하지 않으며 예외 메시지 및 유형 만 지원합니다. 또한 모든 데이터 작업에는 try/catch 블록이 필요합니다.
방법 3 : ??
이 경우 유효성 검사를 어떻게 처리 하시겠습니까? 방법 1은 모델에서 유효성 검사를 할 때 대부분의 사람들이하는 일입니까? 아니면 사람들은 일반적으로 방법 2를 사용합니까? 아니면 내가 생각하지 못하는 방법 3이 있습니까?
응답 해 주셔서 감사합니다. 이 코드는 단지 설명을위한 것입니다 :). 나는 중간에 길을 따라 간 것 같아서, 내 마음이 계정을 사용자로 전환했다. –