Easy-to-follow video tutorials help you learn software, creative, and business skills.Become a member
ColdFusion components or CFCs have become the de facto standard in new ColdFusion applications over the last few years. In order to make developing with CFCs as efficient as possible, CF Builder gives you a lot of help when working with your components. So, let's take a look at exactly how much work CF Builder is going to save us. Returning to the login.cfm page we were working on in the last video, I am going to take my authentication logic here, which is basically just a query and a check against the recordcount, and move that into a login service component.
I am going to place my component inside of the cfcs directory. So, I am going to right-click on cfcs, choose New, and ColdFusion Component. And now the New ColdFusion Component wizard is going to write most of the CFC structure for me. The first section of the wizard just determines where the CFC is going to be placed. In this case, it's in the same directory I right-clicked on to create the CFC. If I wanted to move it, I can just click Browse and then I can specify the component name, which is going to be the name of the file minus the .cfc, so we will call this LoginService.
I can then specify all of the attributes for the CF component tag. I will provide a hint. Provides Login Services for my application. I can give it a display name. I can specify if this is going to extend another CFC, and if I click browse here, I can actually see every CFC the CF Builder is aware of. You can see all of my ART, ARTDAO, ARTGateway, and ARTService inside of the cfcs directory. I can also see all of the cfdocs and CFIDE CFCs.
For example, here are all the adminapi components. For now, we will click Cancel. I can also specify if this CFC implements any interfaces. This particular component won't be outputting any content, so I will choose false for Output. And then I can choose whether or not I want this to be a ColdFusion 9 script style CFC. For now, I am going to stick with the regular tags. Click Next, and I can now specify all the properties and functions for my component. On the Properties, just click Add, and I can specify all of the attributes for CF property tag.
Down here at the bottom, I can also have CF Builder add getters and add setters for each of the individual properties. I can specify the access for each of those getters and setters. And if I am building a large value object CFC with say a dozen CF property tags, this will save me tons of time typing out redundant getters and setters. Our LoginService won't have any properties, so we will just click Cancel. We will have one function though. Click Add Function and our function is going to be called AuthenticateUser.
I don't need any of these three attributes. I will specify the access type, which is going to be public. Our return type is going to be Boolean. I can either type in a return type. For example, if I was going to return another component, I could put in the path to that component, or if I press the down arrow on my keyboard, I can choose one of the built-in return types. And for the output, we will choose false. And we don't need return format, SecureJSON, or VerifyClient, since we are not working on remote function calls. Click OK.
And I can see my function is added to the Functions list. Now I just need to add my two arguments to this function. Click Add Argument. The first argument is our username. We don't need the DisplayName or the Hint, but I will specify the type as being a string. This is going to be required and will not have a default value. Click OK. Then we will add our next argument, which will be password. It's the same thing. It will be a string, and required, with no default value. Click OK.
Then I can see both of my arguments as a comma-separated list, next to the function name. Now that that's complete, I will click Finish. The CF Builder opens out my LoginService and I now have my function ready to accept all of my business logic. So, let's drop that business logic in here real quick. I will go back over to login.cfm and I will cut my query, and go over to the LoginService and we will add it here inside the function. We will var our variable first. Paste the query. I am going to double-click on the LoginService page, so we can see the entire thing.
I will replace FORM with Arguments, and then return whether or not the user successfully validated. So, rsValidation.recordcount is greater than zero. So, I will save this file, and we will go back over to the login.cfm and actually use our new object. So, on login.cfm, I will delete my blank lines here and we will remove this.
Now I need to insert the call to my authenticate user method. I am going to do that by using the Services Browser, which should be, by default, down here in this bottom group of views. If it's not showing, just go to the Show View menu, under Window. If I expand my server here, it will show me all of the CFCs that are available on this server. So, I will expand the cfcs directory. I can see my LoginService. And I can just right-click and choose Insert CreateObject.
And it will add the CreateObject call exactly where my cursor was. I will back up, get rid of the line break, press the period, and now I can see the methods that are available on that object. CFBuilder will go through and introspect all of your components and show you all of the available methods. So, I can press Enter, and then pass in FORM.Username and FORM.Password. I can do a little bit more with the Services Browser though. Let's go to a new line. And instead of using a CreateObject call, I can use the CFInvoke.
And I can actually do that on the method. Choose my method. Choose Insert CFInvoke. It will add the CFInvoke. It's calling the proper component, my method. It's setting my returnVariable, which in this case I actually want to be Session.LoggedIn. And then it provides a cfinvokeargument for each of the arguments on that method. If I scroll down here a bit more on my Services Browser, I can then take a look at each of those arguments. The last trick I use all the time for navigating around my components is inside of the code editor, if I press and hold the Command key or the Ctrl key on Windows, I can hold my mouse over an object or a method and click on it, and it will take me directly to that object or method.
So, as you can see, I clicked on AuthenticateUser. It brought me right to the authenticate method inside of the LoginService component. If I go back over here to login.cfm, I can do the same thing with the CFC itself, press Command, click on LoginService, and it will take me to the first line of the LoginService component. CFBuilder has some great component integration, just don't forget to use it. Instead of choosing New in ColdFusion page, choose New ColdFusion Component and fill out the wizard. Keep your Services Browser open and handy and don't forget to hold down the Command or the Ctrl key to quickly navigate in between your ColdFusion pages and their matching components.
Get unlimited access to all courses for just $25/month.Become a member
61 Video lessons · 105134 Viewers
56 Video lessons · 116911 Viewers
71 Video lessons · 86119 Viewers
131 Video lessons · 41183 Viewers
Access exercise files from a button right under the course name.
Search within course videos and transcripts, and jump right to the results.
Remove icons showing you already watched videos if you want to start over.
Make the video wide, narrow, full-screen, or pop the player out of the page into its own window.
Click on text in the transcript to jump to that spot in the video. As the video plays, the relevant spot in the transcript will be highlighted.