Table of Contents
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.