Events in CakePHP can also be used to define complex workflows in your application. In this recipe, we'll process a package, which was just created, to generate a PDF order and send the resulting file by e-mail (attachment) for further manual processing.
We'll chain the execution of two listeners for a specific event. The partial results of each listener will be stacked in our event, thus allowing listeners to use partial results from listeners that were executed earlier in the event manager queue.
Note that as discussed earlier, sending e-mails and generating PDF files are slow operations, so you should consider moving this logic to a job queue, instead of running them while the user waits.