2017-05-16 15 views
0

먼저이 질문을 읽고 잠재적으로 대답 할 시간을내어 주셔서 감사합니다. 나는 CF의 상대적인 놈입니다.CF 적용 범위가 Mura에서 변경 가능합니까?

I는 사용자가 웹 폼 (POST 방법과 그것에 즉 폼 동작 점)을 채우고 때 호출되는 .CFM 파일을 갖는다. 그런 다음 .cfm은 다른 양식을 데이터 추적 끝점에 게시하고 다음 사용자 대면보기로 진행합니다.

내가 실행 해요 문제, 그리고이 무라 프로젝트를 통해 지금까지로 실행 한이 응용 프로그램 범위 내가 그것을 기대하는대로 작동하지 않습니다. 예를 들어, 내가 설정 응용 프로그램과 같이 바르 :이 상황에서 cfdump'd 경우

<cfif isDefined(form.campaign) AND len(form.campaign) > 
     <cfset application.campaign = form.campaign /> 
    <cfelse> 
     <cfset application.campaign = 'default' /> 
</cfif> 
<cfif isDefined(form.channel) AND len(form.channel)> 
     <cfset application.channel = form.channel /> 
    <cfelse> 
     <cfset application.channel = form.channel/> 
</cfif> 

내가 그것을 통과하고있는 무슨에 따라 예상되는 값으로 나온다. 그러나 일단 다음보기 (cflocation 사용) 및 cfdump 응용 프로그램 범위로 전달하면 해당 두 키를 사용할 수 없습니다.

나는 응용 범위가 세션 동안 계속 유지되어야한다고 생각하고 있었습니까?

+1

아무것도 질문하지 않는다,하지만 난 실제 코드가'이 아니라'다음 IsDefined (form.campaign)'보다 (따옴표) '("form.campaign") 다음 IsDefined 사용합니다 같은데요? 그렇지 않으면 해당 변수가 정의되지 않은 경우 코드가 오류를 일으 킵니다. – Leigh

+0

'application' 스코프는 변경 가능 합니다만, 저는 여러분이 정말로'session' 스코프를 사용해야한다고 생각하고 있습니다. 'application' 스코프는 애플리케이션마다 있습니다 - 여러분의 애플리케이션에있는 모든 사용자는 동일한 애플리케이션 범위를 참조 할 것입니다. 'session' 범위는 사용자 당입니다. 두 스코프는'application.cfc'에서 정의 된 타임 아웃 값까지 지속됩니다. – beloitdavisja

+1

실제 코드를 포함하지 않았기 때문에이 문제를보기가 어렵습니다. 당신이 준 코드 샘플에는 몇 가지 문제점이 있습니다. Leigh는 이미 지적했듯이 isDefined() 함수의 값을 인용해야합니다. 이 코드는 존재하지 않을 때'form.channel' 변수를 잘못 지정합니다. 그러면 오류가 발생합니다. 이론적으로 응용 프로그램 및/또는 세션 범위에 값을 할당하는 데 문제가 없어야하며 그 값은 유지되어야합니다. 따라서 코드에 문제가있을 가능성이 크지 만 주어진 예제를 통해 그 코드가 무엇인지 알 수는 없습니다. –

답변

1

TLDR : 애플리케이션에 Application.cfX 인스턴스가 하나만 있는지 확인하십시오.

팀 구성원이 적절한 파일보다 우선했다 물건의 톤을 돌파 Application.cfc보다 디렉토리의 높은 수준으로 Application.cfm라는 파일을 생성했다.

비즈니스 논리/양식 처리에 사용되는 .cfm 파일에 대한 HTTP 요청을 시도하기 위해 추가되었습니다. 이것은 허용했지만 많은 다른 문제를 야기했습니다.

디렉토리에서 파일을 제거하는, 원격/(무라가 HTTP 요청을 지원하는) 형태로 처리 로직을 이동 일부 코드 리팩토링; Mura ($) 범위와 마찬가지로 응용 프로그램 및 세션 범위를 다시 한 번 응용 프로그램에서 사용할 수 있습니다.