質問

I am trying to use mappings for the first time and I am having some issues. In my CFadmin I created a mapping which goes like this:

Logical Path:

/email_sender

Directory Path:

E:\sites\Example.Com\cf_modules\autoresponders\Emails\emailLists

I am trying to access the include file from a .cfc. Inside my cfc I have an include file which is in the same folder and it works just fine but that include file is tying to access another include file based on the information I am passing through.

The include file inside the component has this code in it.

<cfmail from="#emailData.sender#" to="#surveymain.email#" subject="#subject#"  type="HTML" >
    <cfinclude template="#emailData.includePath#" >
</cfmail>    

Just to be more clear this is my total filesystem:

access.cfm -> some.cfc -> include_1 (works) -> include_2 (issue with the path)

I have a try/catch which emails me the errors and it is located inside the include_1.

How can I use the mapping that I created to finally be able to access my include file?

Please note that after emailLists I have dynamic folders which change depending on which client I am trying to send the email to. So the end result of the path would be:

E:\sites\Example.Com\cf_modules\autoresponders\Emails\emailLists\client_A\email_template.cfm

I tried using my mapping by doing this <cfinclude template="/email_sender/#emailData.includePath#" >

which gave me this error:

The path to the CFC must be specified as a full path, or as a relative path from the current template, without the use of mappings.

Also, I tried including a full path in the cfinclude whic also resulted in the following error:

Note: If you wish to use an absolute template path (for example, >template="/mypath/index.cfm") with CFINCLUDE, you must create a mapping for the path using the ColdFusion Administrator. Or, you can use per-application settings to specify mappings specific to this application by specifying a mappings struct to THIS.mappings in Application.cfc.
Using relative paths (for example, template="index.cfm" or template="../index.cfm") does not require the creation of any special mappings. It is therefore recommended that you use relative paths with CFINCLUDE whenever possible.

Any help/suggestion would be much appreciated

Edit: After restarting the server the version that worked was this one: <cfinclude template="/email_sender/#emailData.includePath#" >

Thanks to those who replied.

役に立ちましたか?

解決

Some questions, rather than some answers.

  1. Did you set the mapping in CFAdmin or in Application.cfc?
  2. What do you get if you run the code below?

    #expandPath("/email_sender")#

  3. What is the value of #emailData.includePath#?

  4. What is the value of this: #expandPath("/email_sender#emailData.includePath#")#?
  5. Can you provide us with the exact text of the error messages, rather than vaguely describing them.
  6. What is the value of #fileExists(expandPath("/email_sender#emailData.includePath#"))#?

If you can update your question with that info, you'll either spot where you're going wrong, or we can help to work out what the story is

他のヒント

Something like this happened to me once before. Essentially we edited the xml file, rather than using the admin interface. It wasn't until our sys admin restarted the server until we realized why the mapping hadn't taken. So have you restarted the server since you added the mapping?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top