Chapter 9. Components

Table of Contents

9.1. Presentation
9.2. Creating your own
9.3. Making your components public

9.1. Presentation

Components are used to aid controllers in specific situations. Rather than extend Cake's core libraries, special functionality can be made into components.

A guy named olle on the IRC channel once said: “ A component is a sharable little "controllerette". ” We find that this is a good definition. The main goal in fact is: reusability. Components are to controllers what helpers are to views. The main difference is that components encapsulate business logic whereas helpers encapsulate presentation logic. This point actually is very important, a common confusing for new Bakers when trying to achieve reusability: I'm trying to do X, should this be a component or a helper?! Well, the answer is really simple, what does X do? Does it do business logic or presentation logic, perhaps both? If it's business logic then it's a component. If it's presentation logic then it's a helper. If it's both, then..well it's both a component and a helper. An example of the later case would be an authentification system. You would want to login, logout, restrict access, and test permissions of a user to a ressource (an action: edit, add, del.. or a url), this is business logic, so this auth system should be a component. But you also want to add some entries to the main menu when the user is logged in, and this is presentation logic.