Thanks for the reply :)

The find after the save isn't returning what I want it to. In fact I'm
not sure it's returning anything at all. Baring in mind I'm a total
newbie (not even that much of a php'er either yet) what I want it
simply somehow (what I've done is just my best guess - I've no idea
how to do this at all) to make it so that when I save a new Campaign,
if it's successful, it redirects to a view action and passes along the
slug, as a string I guess would be best(?), so that I can show the
details of the newly created Campaign on in the view.ctp.

The caveat being that I'm using sluggable behaviour which creates the
slug in a beforeSave and therefore the $slug to be passed on to the
view function has to be created after the save.

I hope that makes sense.



On May 8, 3:08 am, dreamingmind <[email protected]> wrote:
> Barricades,
>
> You don't really say WHERE the process seems to break down. The find
> after the save seems suspicious to me. Is that returning the proper
> slug to pass along to your view function? It looks like $slug will end
> up holding the returned data array rather than the returned string
> from the slug field (see below for more info)
>
> You might take advantage of the fact that the id property of the model
> is set to the id of the record that was created by save. So you should
> be able to set your slug value properly after:
>
> $this->Campaign->findById($this->Campaign-
>
> >id,,array('fields'=>'slug'));
>
> But you should also be aware that this will not return the slug field
> directly. It's going to be in the usual data array:
>
> Array
> (
>     [Campaign] => Array
>         (
>             [slug] => My_crazy_slug
>         )
> )
>
> Regards,
> Don
>
> On May 7, 9:22 am, barricades <[email protected]> wrote:
>
>
>
>
>
>
>
> > Hi, I'm new so please don't shout at me for the stupid question but...
>
> > When I save a record I want to redirect straight to the record I just
> > created. The record which I have just created uses sluggable behaviour
> > to create a slug in a beforeSave, so I can't just use 
> > $this->data['Campaign]['slug'] as it doesn't exist before I save my
>
> > campaign.
>
> > in my add function I've got:
>
> > <pre>
> > if ($this->Campaign->save($this->data)) {
> >         $slug = $this->Campaign->find('first', array('fields' =>
> > 'Campaign.slug'));
> >         $this->redirect(array('action' => 'view', $slug));
> >         } else {
> >         $this->Session->setFlash(__('The campaign could not be saved. 
> > Please,
> > try again.', true));}
>
> > </pre>
>
> > and then
>
> > <pre>
> > function view($slug) {
> >         $campaign = $this->Campaign->find('first',
> > array('conditions'=>array('Campaign.slug'=>$slug), 'recursive'=>-1));
> >         $this->set(compact('campaign'));
> >         }
> > </pre>
>
> > but that ain't working. I've tried a couple of other ways but I'm a
> > bit stumped.
>
> > How do I get the value that's in the slug column for the Campaign
> > which has just been saved and pass it on to the view function so that
> > I can display the right Campaign?
>
> > thanks in advance :)

-- 
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

Reply via email to