I always thought the same thing as Dave, but finally gave up because there is no other sensible solution. I never thought to put common methods in app_controller!! I'm so glad I opened this thread, because this just made cake so much more elegant for me.
On Oct 20, 11:55 am, "Dave Maharaj :: WidePixels.com" <d...@widepixels.com> wrote: > Yeah the added model strain I figured as much. > > Low down on my problem. User has 5 HABTM relations. Normally you edit all > the user info in 1 call admin_edit in user controller. But I have broken the > info into sections for each HABTM, I managed to write 1 function that will > updated each HABTM so that made the code cleaner, but the User has for 1 > specific example has User.email, if they edit the email is suspends the > account until they confirm thier email again. So I need a separate form for > just that function so I now need 2 additional admin functions, 1 to call the > form, and 1 to save it. Same with the Users->Profile contact info. Profile > is made up of lots of fields but I want a user to edit say just the contact > info fields I need a admin_edit_contact and admin_index_contact and all > these exra functions are making agiant mess. Just tossing ideas around to > cleanit up and more readable / manageable > > Thoughts on how to combat this? > > -----Original Message----- > From: Jamie [mailto:jamie....@gmail.com] > Sent: October-20-09 1:39 PM > To: CakePHP > Subject: Re: Admin Controller > > I don't think you should put your admin functions in their own controller. > > First, having a separate admin controller means that, instead of just > loading one primary model per controller, you'll be stuck handling a ton of > models within that one controller, which could get messy and almost > certainly inefficient. > > Also, instead of being able to name your functions "admin_edit", > "admin_index", etc., you'll need unique names for each model - > "admin_users_edit", "admin_pages_edit", etc. Or, you could just have one > massive admin_edit function. Or, your admin_edit function could just call a > bunch of other internal functions. Any way you look at it, though, it'll be > messy (again). > > Basically, if you keep a model's admin functions in that model's controller, > you'll always know what you're working with. > > Why do you want to separate the functions, anyway? If you're worried about > duplicate code (e.g. ten identical admin_edit functions), you could move > some of your common functions that are the same in every controller to > AppController. I did this for admin_delete and admin_edit, as well as some > other ones I wrote (admin_publish, admin_unpublish, etc.). My 'stock' > admin_delete in AppController, for example, looks like this: > > function admin_delete($id = null) { > if (!$id) { > $this->Session->setFlash(__('Invalid id for ' . > $this->modelClass, true)); > $this->redirect($this->referer()); > } > if ($this->{$this->modelClass}->del($id)) { > $this->Session->setFlash(__($this->modelClass . ' > deleted', true)); > $this->redirect($this->referer()); > } > } > > If I need extra functionality for a certian controller I can just define > admin_edit() in that individual controller. But most of the time, it works > just fine. > > Anyway, hope this helps you decide. > > - Jamie > > On Oct 20, 8:28 am, "Dave Maharaj :: WidePixels.com" > <d...@widepixels.com> wrote: > > Can you, or suggest , reasons for or not to.... > > > create an admin_controller and keep all admin functions separate from > > the other controllers? > > > Dave --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "CakePHP" group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~----------~----~----~----~------~----~------~--~---