2012-06-13 1 views
2

필자는 휠과 MVC 프로그래밍 전반에서 CF를 처음 접했던 CFML 개발자입니다. 나는 그것을 빨리 알아 차리고 있지만, 나에게 분명하지 않은 한 가지 방법은 선택적으로 여러 db 테이블 레코드 (모델)를 업데이트하는 방법을 제공하는 것입니다. 나는 특별히 User 정보와 User Profile 정보에 대해 탭 형식을 설정하고 싶습니다. 전자 형식은 필수이고 후자는 필요하지 않습니다. 이 데이터는 두 개의 서로 다른 일대일 테이블에 저장됩니다. 두 개의 "새"또는 ​​"편집"보기를 호출하고 2 개의 다른 테이블에 영향을주는 2 개의 "작성"또는 "업데이트"절차를 실행하기 위해 필요한 설정은 무엇입니까? 아니면이 모든 잘못에 대해 생각하고 있습니다.MVC (CFWheels)의 두 컨트롤러/모델에서 1 개의 폼을 처리하는 방법은 무엇입니까?

업데이트 : 내가하려는 일에 대해 더 많은 정보를 추가하십시오. 간단하게하기 위해이 탭에서 2 개 탭과 2 개 테이블을 고수 할 것입니다.이 경우 적어도 3 개를보고 있습니다.

그래서 User 테이블과 UserProfiles 테이블이 있는데 사용자에 따라 UserProfile과 관련된 1 대 1 관련 User.cfc 및 UserProfile.cfc라는 모델이 있습니다. 꽤 표준적인 것들. 각각 나는 컨트롤러가있다 : Users.cfc와 UserProfiles.cfc, 각각의 액션을 포함한다. 추가, 편집, 생성, 업데이트, 명백한 작업 수행 (표시 양식 추가 및 편집). 각 부분에 대해 양식 필드를 추가/편집하는 부분이 있으므로 이미 준비되어 있습니다. 이제는 효과적으로 동시에 두 테이블을 업데이트 할 수있는 단일 추가/편집 양식을 만들고 싶습니다. 탭은별로 중요하지 않습니다. 효과적으로 모든 것이 한 페이지에있을 수 있습니다.

그래서 개념적으로 내가 좋아하는 뭔가를하고 있어요 :

#startFormTag(action=???)# 
#includePartial("form_user_add-edit")# 
#includePartial("form_userprofile_add-edit")# 
<button type="submit" class="btn">#operation#</button> 
#endFormTag()# 

나는 기본적으로 두 개의 서로 다른 컨트롤러에 대한 생성 및 업데이트 작업을 결합하여 별도의 컨트롤러 액션을 작성해야합니까? 기쁘게 열망 CFWheels 초보자에서 미리

감사합니다 ...

브라이언

답변

1

모든 데이터가 hasMany 또는 hasOne 연관을 통해 관련되어 있다면 중첩 된 속성을 살펴 보는 것이 좋습니다. 당신이 비록 초보자라면

http://cfwheels.org/docs/1-1/chapter/nested-properties

, 당신은 간단한 일이 밖으로 일이있어 때까지이 자제 할 수 있습니다.

+0

감사합니다 크리스. 나는 이것을 불완전한 방법으로 제거 할 수 있었고, 지금은 중첩 된 속성을 사용하여 되돌아 갈 것입니다. 필자의 주된 장애물은 개념적이었습니다. MVC에서는 하나의 컨트롤러로 처리되는 하나의보기, 하나의 컨트롤러, 가능하면 여러 모델 인 것처럼 보입니다. 따라서 컨트롤러와 뷰가 정렬되어있는 한, 여러 컨트롤러와 뷰가 상호 작용하고 여러 모델을 표시하는 데 사용할 수 있습니다. 시원한! –

0

나는 당신이 가능 hasOne를 사용하여 관련된이 두 테이블을 나타내는 약 2 모델을 얘기하는 것 같아요. 모델은 validate data을 허용하므로 컨트롤러가 훨씬 간단 해집니다. 이렇게하면 두 개의 탭 아래에 두 개의 forms을 만들고 레코드의 기본 키를 숨겨진 필드로 유지할 수 있습니다. 컨트롤러가 유효성 검사를 실행하고 양식을 다시 표시 할 수 있습니다 (partials 도움이 될 수 있음) ... 잠시만 기다려주세요. reference을 통해 가고 있습니다.

이 답변은 귀하의 질문뿐만 아니라 매우 일반적인 것임을 알고 있습니다. 나는 당신이 나아가서 무언가를 시도하고 그것이 어떻게 작동하는지 보도록 권합니다.

그런 다음 코드 샘플로 질문을 업데이트하고 특정 문제가 있는지 물어보십시오. 예를 들어 CFWheels의 유효성 검사 및 오류 표시는 다소 까다로운 작업 일 수 있습니다.

+0

입력 해 주셔서 감사합니다. Sergii. 내가 너무 애매하다고 말하는 것은 충분히 공평합니다. 나는 여러 가지 접근법을 시도해 왔지만 코드를 실행하기 전에 명백한 블록으로 계속 실행합니다. 내가 더 구체적 일 수 있는지 알아 보도록하겠습니다. 나는 사용자 테이블과 UserProfiles 테이블과 UserSettings 테이블을 모두 일대일로 사용합니다. 모든 사용자는 각각의 레코드를 가지고 있습니다.이것은 분해 될 필요가 절대적으로 필요한 것은 아니지만 몇 가지 이유로 나는 그것을 선호합니다. –

+0

내가하려고하는 것은 이러한 양식 중 하나를 별도의 컨트롤러와 별도의보기 및 별도의 모델로 사용할 수있게하는 것입니다. 그러나 적어도 업데이트 작업에서는 모두 한꺼번에 수행해야합니다. 그래서 사용자는 "메인"탭이나 "프로필"탭 또는 "설정"탭을 클릭하고 각각의 정보를 변경할 수 있지만 한번에 "저장"하면 모두 호출해야 할 것입니다. save() 액션을 한 곳에서 처리합니다. 그러나 구조 나 서열을 이해할 수는 없습니다. 그리고 네, 이미 부분에 대한 양식을 사용하고 있지만 어려운 부분은 조건부로 또는 동시에 3 개의 업데이트 작업을 모두 제출하는 것입니다 ... –