Solved

Coldfusion component not found problem

Posted on 2011-02-20
14
598 Views
Last Modified: 2012-08-14
I am using version 9, IIS, and testing on my local machine. My virtual dir points at (local path) c:\inetpb\wwwroot\gpsv2\web.

my cfm file is a the top level.
My cfc that I want to use is down two levels "store\app\login.cfc".

When I try an <cfinvoke component="web.store.app.login", I get a cannot find component. I have moved the cfc to the same directory and component="login" works fine. So, with am I doing wrong?

I have also tried GPSV2.web.store.app.login and just store.app.login and I get the same component not found error.
0
Comment
Question by:BPSRobertAdmin
  • 6
  • 3
  • 3
  • +1
14 Comments
 
LVL 16

Assisted Solution

by:Gurpreet Singh Randhawa
Gurpreet Singh Randhawa earned 250 total points
ID: 34940720
I suggest you one way!

Application.cfc, Store your complete website path in Application CFC

just like thi!

<cfset Application.cfcPath = "web.store.app">

and then using this:

<cfinvoke component="#Application.cfcPath#.login" method="mymethod" returnvariable="str"/>

This is the way i use my CFC's no matter how often they are nested, it works flawlessly, but make sure that your folder path is correct
0
 
LVL 11

Expert Comment

by:Brijesh Chauhan
ID: 34940742
You need a web-root relative pathing, or a mapping-relative path.

Example of paths

YOUR CFC -> C:\ColdFusion9\wwwroot\web\projects\cfc\test.cfc

TEST page here -> C:\ColdFusion9\wwwroot\web\projects\ee\test.cfm

Invoke your component like below

<cfinvoke component="web.projects.cfc.test" method="forTesting"  returnVariable="res">
0
 
LVL 11

Expert Comment

by:Brijesh Chauhan
ID: 34940763
You can also create mapping in CF ADMINISTRATOR for you components,

Server Settings > Mappings

Logical Path  --> any name you want to give to remember components, say "components".

Directory Path -->c:\inetpb\wwwroot\gpsv2\web\store\app\

Then you can invoke your component as

<cfinvoke component="/components.login" ....
0
The New “Normal” in Modern Enterprise Operations

DevOps for the modern enterprise offers many benefits — increased agility, productivity, and more, but digital transformation isn’t easy, especially if you’re not addressing the right issues. Register for the webinar to dive into the “new normal” for enterprise modern ops.

 
LVL 16

Expert Comment

by:Gurpreet Singh Randhawa
ID: 34941116
use the CGI Scope from the debugging from where your path is actually coming from and then you can use the Path and add in the Application.CfcPath and then you can run your CFC, this way you can make it working

if you have have access to the CF Admin, then you can use the following <cfdump var to find the CGI Scope and check what is actual Path in there

and if you have acces to CFADMin the you can use the Mapping Functionality as said above by brijesh
0
 
LVL 39

Accepted Solution

by:
gdemaria earned 250 total points
ID: 34943964

cfc path's are always from the webroot down

   so if your cfc is located here...   "store\app\login.cfc"

and "store" is a folder in the ROOT of your website

then you should be able to access it using this

<cfinvoke component="store.app.login" ....



But it sounds like you are using a virtual directory, which coldfusion doesn't see.    So you want to setup a codlfusion mapping for "web" to   "c:\inetpb\wwwroot\gpsv2\web".    This can be done in the /CFIDE/administrator

Then you can use the code as you "web.store.app.login"
0
 

Author Comment

by:BPSRobertAdmin
ID: 34944501
My problem was that I had a <cfobject> tag that needed to be changed also. I did not look at the error message closely enough.

component="store.app.login" (which as qdemaria states is just below the web root) works fine.

brijeshchauhan - your suggestion might mislead as you are suggesting a physical path.

myselfandhawa - thank you for the code organization tip.
0
 

Author Closing Comment

by:BPSRobertAdmin
ID: 34944525
Thankyou. I put some comments in the last post
0
 
LVL 11

Expert Comment

by:Brijesh Chauhan
ID: 34944989
>> brijeshchauhan - your suggestion might mislead as you are suggesting a physical path.

No I am NOT,  /components, is the LOGICAL path to ALL you components if you want to keep them at one place..

Then you can invoke all your components using this logical path which points to CFC's

<cfinvoke component="/components.login" ....

<cfinvoke component="/components.componentNames" ....

anyways.. your issue is resolved which is what was required...
0
 
LVL 39

Expert Comment

by:gdemaria
ID: 34945033

brij, I don't believe you can use the "/"   in component="/componets  

it would be just  component="components....

The path always starts at the root, so there is no need either way
0
 
LVL 11

Expert Comment

by:Brijesh Chauhan
ID: 34945127
Yes, you can use.. try it out.. !!

I always keep my components at a place, then create a mapping to them in CF admin and invoke them, it is much shotter then calling store.app. .... you can just remember the mapping and use it..

I have been using the same way, just a personal preference..
0
 
LVL 11

Expert Comment

by:Brijesh Chauhan
ID: 34945168
The DOC says..

You need a web-root relative pathing, or a mapping-relative path.

There is nothing wrong in what I have suggested, but as I said, the user issue is resolved which is what is required...

0
 
LVL 39

Expert Comment

by:gdemaria
ID: 34945296

I tested it, it seems that the slash / will work in the first position even though it's supposed to be dot notation
0
 
LVL 11

Expert Comment

by:Brijesh Chauhan
ID: 34945383
yes, it works because /components is the LOGICAL PATH in your CF ADMIN.. so you can always refer it with a slash...

I have my components in a dir path like /opt/commercecreators/applicaiton/ccv5/scripts/cfc/ ... so instead of calling it like opt.commercecreators.application.ccv5.... I create a mapping to this director in CF ADMIN and call it the way I suggested above.
0
 

Author Comment

by:BPSRobertAdmin
ID: 34945607
Sorry bri. I just assumed that the slash would not work in the dot notation. My bad... I should have tried it before I said anything.

Thanks,
Robert
0

Featured Post

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Sometimes databases have MILLIONS of records and we need a way to quickly query that table to return the results me need. Sure you could use CFQUERY but it takes too long when there are millions of records. That is why SOLR was invented. Please …
Recently while working on a project I got a very annoying cfdocument has no body error message. I had never seen this error before. So I checked the code. The code was pretty simple; it was Just showing me the cfdocumnt tag and inside that tag a …
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…
I've attached the XLSM Excel spreadsheet I used in the video and also text files containing the macros used below. https://filedb.experts-exchange.com/incoming/2017/03_w12/1151775/Permutations.txt https://filedb.experts-exchange.com/incoming/201…

789 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question