Ahhhh That's mighty clever too Martin, thanks for sharing.  I have a
static menu but I like the idea of not having to pass anything to the
view and the layout figuring out where it is on its own.  My problem
is I'm using the same pages controller to display 3 of my 6 tabs with
static content, so the controller name is the same 3 out of 6 times so
I needed another way to decide between them all.

But thanks for sharing, I'll keep that in mind for my next projects.

On Jan 14, 3:36 am, Martin Westin <martin.westin...@gmail.com> wrote:
> One technique I have used where I want it to be as automatic as
> possible (but possibly not compatible with any routing scenario) is
> this:
>
> My main menu consists of either plugins or controllers (some of each
> kind.) So I use this to figure out what the current plugin or top-
> level controller is:
> ---
> if ( empty($this->plugin) ) {
>     $module_name = $this->name;} else {
>
>     $module_name = $this->plugin;}
>
> ---
> Then I loop the currently available "modules" (controllers and plugins
> that should be visible).
> For each one I compare its name to the one extracted above and set the
> class to selected if it matches.
> ---
> foreach($modules as $one) {
>     $class = '';
>     if ( low($module_name) == low($one) ) {
>         $class = ' selected';
>     }
>     e('<li id="'.'main_menu_'.$one.'" class="main_menu_item'.
> $class.'">');
>     e( $html->link(___('main_menu_'.$one),'/'.$one) );
>     e('</li>');}
>
> ---
> For the links I only need to go to the index action but there is
> nothing stopping you from using more detailed menu-data to make more
> complex versions of this technique.
>
> What I like it that I don't need any specific (hard coded) information
> in my layout. I can change out the available menuitems at any time. I
> do this to adapt the menu to the permissions each user has. They only
> need to see items that they actually can access. I construct the list
> of available "modules" in AppController::beforeFilter after Auth has
> done its thing.
>
> /Martin
>
> On Jan 14, 3:05 am, nurvzy <nur...@gmail.com> wrote:
>
> > Thank you Miles!
>
> > That technique is exactly what I was looking for!
>
> > Nick
>
> > On Jan 13, 5:04 pm, Miles J <mileswjohn...@gmail.com> wrote:
>
> > > This is how I do mine:
>
> > > // controller action
> > > function login() {
> > >         $this->set('activeTab', 'login');
>
> > > }
>
> > > // the view
> > > <li<?php if ($activeTab == 'login') echo ' class="selected"'; ?>><a
> > > href="#">Login</a></li>
> > > <li<?php if ($activeTab == 'signup') echo ' class="selected"'; ?>><a
> > > href="#">Signup</a></li>
>
> > > Also, your function would go in the bootstrap.php file in your app/
> > > config/ folder.
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to