문제

기존 MVC 애플리케이션을 코딩 할 때 서버 측 양식 유효성 검사를 코딩하는 모범 사례는 무엇입니까?코드가 컨트롤러에 속합니까, 아니면 모델 레이어에 속합니까?그리고 그 이유는 무엇입니까?

도움이 되었습니까?

해결책

Wikipedia에서 : <인용구>

모델-뷰-컨트롤러 (MVC)는 소프트웨어 엔지니어링에 사용되는 아키텍처 패턴입니다.패턴을 성공적으로 사용하면 비즈니스 로직이 사용자 인터페이스 고려 사항과 분리되어 애플리케이션의 시각적 모양이나 기본 비즈니스 규칙을 다른 것에 영향을주지 않고 쉽게 수정할 수 있습니다.MVC에서 모델은 애플리케이션의 정보 (데이터)와 데이터를 조작하는 데 사용되는 비즈니스 규칙을 나타냅니다.보기는 텍스트, 확인란 항목 등과 같은 사용자 인터페이스의 요소에 해당합니다.컨트롤러는 키 입력 및 마우스 움직임과 같은 사용자 동작 모델에 대한 통신과 관련된 세부 정보를 관리합니다.

따라서 모델은 애플리케이션과 비즈니스 규칙을 담고 있습니다.

다른 팁

저는 Josh와 완전히 동의합니다.그러나 컨트롤러와 모델 사이에 일종의 유효성 검사 계층을 만들어 데이터가 모델에 도달하기 전에 대부분의 구문 유효성 검사를 수행 할 수 있습니다.

예 :

검증 레이어는 날짜 형식, 금액 형식, 필수 필드 등을 검증합니다.

따라서 해당 모델은 x 금액이 y 금액보다 커야하는 것과 같은 비즈니스 유효성 검사에만 전적으로 집중합니다.

지금까지 MVC에 대한 나의 경험은 전적으로 레일로 구성되어 있습니다.

Rails는 모델에서 100 % 검증을 수행합니다.
대부분의 경우 이것은 매우 잘 작동합니다. 10 번 중 9 번이면 충분합니다.

그러나 양식에서 제출하는 내용이 모델과 제대로 일치하지 않는 영역이 있습니다. 추가 필터링 / 재정렬 등이있을 수 있습니다.

내가 찾은 이러한 상황을 해결하는 가장 좋은 방법은 기본적으로 모델 객체처럼 작동하지만 양식 데이터와 일대일로 매핑하는 가짜 모델 객체를 만드는 것입니다. 이러한 가짜 모델 객체는 실제로 아무것도 저장하지 않으며 검증이 첨부 된 데이터의 버킷 일뿐입니다.
이러한 것의 예 (레일에서)는 ActiveForm

데이터가 해당 데이터로 들어가면 (유효한 경우) 일반적으로 실제 모델로 직접 전송하는 매우 간단한 단계입니다.

기본 구문 검사는 모델에 대한 사용자 입력을 변환하므로 컨트롤에 있어야합니다.모델은 실제 데이터 유효성 검사를 수행해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top