1.2 session component supports this out of the box. function setFlash($message, $layout = 'default', $params = array(), $key = 'flash') {
Never used it personally, but that might help. From reading bits of the code it looks like it uses view->renderLayout(), so you would need to create a new layout for each message template, rather than an element. I guess you could even call renderElement() from that layout if you wanted. Cheers, Adam On Sep 11, 12:18 am, grigri <[EMAIL PROTECTED]> wrote: > I'd do something like this: create an element for each flash chunk you > want to display, then store the references in the session - separately > from the normal flash data. > > /app/elements/flash-email-not-unique.ctp : > > <div class="flash-chunk"> > <h3>Email not unique</h3> > <p> > Someone is already using the email address <var><?php echo > htmlentities($email); ?></var>; to view their information <?php echo > $html->link('click here', '/users/view/' . $user_id, array('title' => > '\'Click here\' is really bad link text')); ?>. > </p> > </div> > > /app/controllers/users_controller.php : > > function add() { > // ... bla bla bla > if (...) { > // Want to display flash chunk - pass view parameters (user_id and > email) > $this->Session->write('MyFlash', array('chunk' => 'email-not- > unique', 'user_id' => $foo, 'email' => $bar)); > } > > } > > /app/views/layouts/default.ctp > (before/after where the normal flash bit is) > > <?php > if ($session->check('MyFlash')) { > $chunk_info = $session->read('MyFlash'); > $session->del('MyFlash'); > $chunk_name = 'flash-' . $chunk_info['chunk']; > unset($chunk_info['chunk']); > echo $this->renderElement($chunk_name, $chunk_info);} > > ?> > > Of course, this is just a base idea - you could easily extend this to > having multiple 'chunks' displayed and so forth. But the basic idea > is: if what you are going to display is more complicated than simple > text, then it should be rendered by a view (here, an element). > > You might also want the model to specify what error is to be > displayed, then for the controller to interpret this, rather than > having the controller do it directly. > > Hope this helps (and works) > > On Sep 9, 6:34 pm, David <[EMAIL PROTECTED]> wrote: > > > Hi guys, > > > Here are situations where one might want to include a link in a flash. > > For example, my app sometimes generates random user passwords. If a > > user has one of these passwords, I would like to flash 'If you would > > like to change your password, click here' when they log in. > > > The same thing is conceivable with validation errors. Imagine I am > > checking that a registering user's email doesn't already exist in the > > database, and if it does I want to generate an error message like > > 'someone is already using this email address. To view their > > information, click here'. > > > I suppose the fundamental problem is that flashes are really part of > > the view rather than the controller, but as they are generated in the > > controller you don't have access to helper methods for generating > > links, etc. > > > I would like to know if anyone has tackled this problem in their app, > > and if so what technique they used to go about it. Any ideas? > > > Thanks! > > > David --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Cake PHP" group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~----------~----~----~----~------~----~------~--~---