OK I went with my original idea, changed the url and created 1 function to
update everything individually. The problem I am running into now is when
the form is displayed the options are no longer selected for each section.

function update($slug, $modelName)
      {
          $user = $this->User->findBySlug($slug);
          if ($this->RequestHandler->isAjax()) {
              
              
              $this->set('user', $this->User->read(null, $id));
              if (!empty($this->data)) {
                  if ($this->User->save($this->data)) {
                      //$this->view_$modelName($slug);
                  }
              }
              $model_name = Inflector::classify($modelName);
              $options = $this->User->$model_name->find('list',
array('fields' => 'name', 'order' => 'name ASC'));
              $this->set(compact('options'));
                          debug(array($slug, $modelName, $id, $model_name));
          }
          if (empty($this->data)) {
              $this->data = $this->User->read(null, $id);
          }
      }


When I debug I get the correct info. 

$modelName = educations 
$model_name - Education
$slug = the name on the account
$id = the user id

Just not sure why no info is being displayed on the form. (I have options
selected in the original rendered view, when I click edit the form appears
with all the options to choose from but the ones that were selected are now
blank)

Ideas?

Thanks,

Dave
-----Original Message-----
From: Walther [mailto:[email protected]] 
Sent: April-10-09 1:49 PM
To: CakePHP
Subject: Re: DRY function


Your idea is the what I believe is the correct solution.

Instead of calling $this->User->Skills->find... You'd call $this->User-
>$modelName->find

You'd need to do something with the view_skills and view_educations type
functions. Assuming they are similar you could do $this->view ($slug,
$modelName), otherwise perhaps move them into the model and call
$this->User->$modelName->view($slug);

Walther.

On Apr 10, 5:34 pm, "Dave Maharaj :: WidePixels.com"
<[email protected]> wrote:
> I was hoping for some info on how to take 4 functions and make the 
> into 1.They all do the same thing except its a different model that they
use.
> They simply update a users options thru a select check box form, 
> that's the only thing being edited. Basically I took the edit view and 
> broke it up into
> 4 different Ajax edits and each has its own function but since they 
> are all the same except for the model call I was hoping someone could 
> give me some advice on creating 1 standard function.
>
> They all get called from the same page  users/profile, the link in the 
> view is users/profile/[user slug]/update_eductions or 
> users/profile/[user slug]/update_skills. I am still very new with cake 
> but was thinking if I modified the link url used an additional 
> variable based on the link action to get users/profile/[user 
> slug]/educations/update  I could then use 1 function called update and 
> set the "educations" in the url to define what model to update and 
> pass that into the function. the update function would be something 
> like function update ($slug, $modelName) then in the old function replace
the model name with $modelName ?
>
> function update_eductions($slug = null)
>       {
>           $this->User->recursive = 1;
>           if ($this->RequestHandler->isAjax()) {
>      $user = $this->User->findBySlug($slug);
>           $id = $user['User']['id'];
>               $this->set('user', $this->User->read(null, $id));
>               if (!empty($this->data)) {
>                   if ($this->User->save($this->data)) {
>                       $this->view_educations($slug);
>                   }
>               }
>               $educations= $this->User->Educations->find('list',
> array('fields' => 'name', 'order' => 'name ASC'));
>               $this->set(compact('educations'));
>           }
>           if (empty($this->data)) {
>               $this->data = $this->User->read(null, $id);
>           }
>       }
>
> or to update skills
>
> function update_skills($slug = null)
>       {
>           $this->User->recursive = 1;
>           if ($this->RequestHandler->isAjax()) {
>      $user = $this->User->findBySlug($slug);
>           $id = $user['User']['id'];
>               $this->set('user', $this->User->read(null, $id));
>               if (!empty($this->data)) {
>                   if ($this->User->save($this->data)) {
>                       $this->view_skills($slug);
>                   }
>               }
>               $skills= $this->User->Skills->find('list', 
> array('fields' => 'name', 'order' => 'name ASC'));
>               $this->set(compact('skills'));
>           }
>           if (empty($this->data)) {
>               $this->data = $this->User->read(null, $id);
>           }
>       }
>
> Ideas? Suggestions?
>
> Thanks,
>
> Dave


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to