Yea, probably much easier for me to explain what I've done and what I'd like
to do.

So basically I implemented the ajax select box using the code below:

http://www.devmoz.com/blog/2007/04/04/cakephp-update-a-select-box-using-ajax/

My code set up is more less the same as the example posted in that article. 
The ajax select box I created allows a user to select a car make, then year,
then model.  Currently, I have this working in index.ctp just like the
example, and the ajax calls the update_select.ctp.

What I would like to do, is move this ajax selector into my navigation bar
so that the user can change is car at any point during his browsing
experience.  This means that no matter what view he's on, he can still use
my ajax selector through the navbar.

The complication is that my code is in my car_controller "index.ctp" and
uses "update_select.ctp" with observefield (like the example).  I want to
somehow move this code/functionality into my default.ctp.  Perhaps you guys
can suggest the best strategy?  Even if I move the code from index.ctp to
default and access the set variable from the app_controller before filter
(as suggested), I still have the issue of ajax having to call the
update_select function which I have no idea where I would move it to
(perhaps in the app_controller?)...

I apologize for the constant questions and greatly appreciate the help you
guys have been giving me :)  





And then we scroll back 15 emails :


If this works, then I would suggest to add your layout data to the view
inside the beforeFilter() method of AppController and then use this data in
your layout. Might even consider creating an element for the part that uses
this data ...


> 
> :)
> 
> On Sat, Oct 3, 2009 at 10:34 AM, Miles J <mileswjohn...@gmail.com> wrote:
> 
>>
>> Do it in the beforeFilter() of your AppController, that will apply it
>> to all views and layouts.
>>
>> On Oct 3, 1:18 am, hahmadi82 <hahmad...@gmail.com> wrote:
>> > Now I see!  So the set variables change depending on which view is
>> showing
>> > within the default.ctp.  If I add this car action to the app_controller
>> > (instead of car model) and set the variables there, will all the views
>> have
>> > access to that variable? How can I make a global "set" variable that
>> comes
>> > from a specific query?
>> >
>> >
>> >
>> > brian-263 wrote:
>> >
>> > > On Fri, Oct 2, 2009 at 10:55 PM, hahmadi82 <hahmad...@gmail.com>
>> wrote:
>> >
>> > >> Ok so I actually didn't create a layout for each view from my
>> > >> controllers.
>> > >> Instead, all the views use the same layout, which is the
>> default.ctp.
>> Is
>> > >> that incorrect? From my understanding, the default layout is loaded
>> by
>> > >> every
>> > >> view and that's why I have my navigation bar in it.  It seems that I
>> can
>> > >> only access those "set" variables from something like
>> > >> views/layouts/cars/index.ctp but not views/layouts/default.ctp. Is
>> there
>> > >> a
>> > >> difference between the model layouts and the default layout?
>> >
>> > > You *almost* have it. Once again:
>> >
>> > > When a controller's action is run, its render() method is called
>> > > automatically (yes, you can call it yourself but please ignore that
>> > > for now). When that happens, Cake will use the View class to render
>> > > the view template for that action. These templates are in
>> > > app/views/controller_name_ending_in_s/action_name.ctp
>> >
>> > > Usually, the view template contains some HTML that you have included,
>> > > along with some variables. Those variables are passed to the View
>> > > class through the controller's $viewVars class variable. When you
>> call
>> > > $this->set('foo', 'bar'), you are passing the value, 'bar' to the
>> > > controller's $viewVars array with a key, 'foo'.
>> >
>> > > When the controller's $viewVars is handed off to the View class, it
>> > > extracts them, essentially creating a var named $foo that contains
>> the
>> > > value 'bar'.
>> >
>> > > Now, after the View has finished using the view template to render
>> > > something to output it creates a variable called,
>> $content_for_layout.
>> >
>> > > It then renders the layout template. That's a file in
>> > > app/views/layout/name_of_your_layout.ctp. If you don't specify a
>> > > layout, Cake uses 'default'.
>> >
>> > > Inside the layout template is (should be) a variable named ...
>> > > $content_for_layout. This is where the contents of your rendered view
>> > > are written to the layout.
>> >
>> > > So, try this: In one of your controller actions, add
>> $this->set('foo',
>> > > 'bar');
>> >
>> > > In your app/views/layouts/default.ctp add this, just above
>> > > $content_for_layout
>> >
>> > > echo $foo;
>> >
>> > > You should see 'bar' in there, somewhere. View source and search for
>> > > it, because your CSS may hide it.
>> >
>> > > Anyway, perhaps you should post the relevant part of your layout file
>> > > and the controller action.
>> >
>> > --
>> > View this message in context:
>> http://www.nabble.com/Access-Classes-In-Layout-Help---tp25706283p2572...
>> > Sent from the CakePHP mailing list archive at Nabble.com.
>> >
>>
> 
> > 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Access-Classes-In-Layout-Help---tp25706283p25731765.html
Sent from the CakePHP mailing list archive at Nabble.com.


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