@cricket
almost perfect - I would not pass the referer this way, though. creates
overhead
and then I don't think the else case inside the post() is necessary.
after a post the same post data will populate the inputs anyway. therefore
the Model.referer input should still have the same value.
no need to resend this variable to the view.
I also dont like to unnecessarily set defaults in the view.
echo $this->Form->input('Model.referer');
public function add() {
if ($this->request->is('post')) {
// validate ...
if ($this->Model->save()) {
$referer =
!empty($this->request->data['Model']['referer'])
? $this->request->data['Model']['referer']
: '/'; // or some other fallback route of
your choice
$this->redirect($referer);
}
} else {
$this->request->data['Model']['referer'] = $this->referer();
}
}
you agree?
Am Montag, 16. April 2012 01:08:29 UTC+2 schrieb cricket:
>
> On first display of the form pass the referer to the view to add it to the
> form.
>
> echo $this->Form->input('Model.referer', array('value' => $referer));
>
> public function add() {
>
> if ($this->request->is('post')) {
>
> $referer = isset($this->request->data['Model']['referer'])
> ? $this->request->data['Model']['referer']
> : '/'; // or some other fallback route of
> your choice
>
> // validate ...
>
> if ($this->Model->save()) {
>
> $this->redirect($referer);
> }
> else {
> // flash msg, log, etc.
> $this->set(compact('referer'));
> }
> }
> else {
> $this->set('referer', $this->referer());
> }
> }
>
>
> You have to use the else block to set the view var because if the save
> failed it would overwrite it to the empty form. Likewise, you need to
> create the $referer method var before attempting to save so that it's
> available either way (to redirect or reset the view var).
>
> On Sun, Apr 15, 2012 at 4:15 PM, Daniel <[email protected]> wrote:
> > I am using the following code to go back a page, but the problem is
> > that the action is an "add" one so it just goes back to an empty "add"
> > form:
> >
> > if ($this->request->is('post')) {
> > // blah blah ...
> > if ($this->Inemail->save($this->request->data)) {
> > // blah blah ...
> > $this->redirect($this->referer());
> >
> > I think what I need to do is go back two pages. Is this possible?
> >
> > Thanks.
> >
> > --
> > Our newest site for the community: CakePHP Video Tutorials
> http://tv.cakephp.org
> > Check out the new CakePHP Questions site http://ask.cakephp.org and
> help others with their CakePHP related questions.
> >
> >
> > To unsubscribe from this group, send email to
> > [email protected] For more options, visit this
> group at http://groups.google.com/group/cake-php
>
>
--
Our newest site for the community: CakePHP Video Tutorials
http://tv.cakephp.org
Check out the new CakePHP Questions site http://ask.cakephp.org and help others
with their CakePHP related questions.
To unsubscribe from this group, send email to
[email protected] For more options, visit this group at
http://groups.google.com/group/cake-php