I've used headScript with great success, typically, I'll have a layout define my js library and then have each template insert it's particular:
layout.phtml: <? $this->headScript()->prependFile('/js/jquery.js'); ?> ... further down ... <?= $this->headScript() ?> search.phtml: <? $this->headScript()->appendFile('/js/search.js'); ?> This correctly generates all of my <script> tags. - jake On Thu, May 29, 2008 at 5:37 PM, Kevin McArthur <[EMAIL PROTECTED]> wrote: > The layout should really be the last thing that gets rendered, immediately > before the response is sent. > > Thus, as your templates go around adding to head* helpers... the layout > parses after those actions do and the resulting containers are already full > when the echo is encountered in the layout. > > Make sense? > > Kevin McArthur > > bfoust wrote: > > The headScript() and headLink() helpers are purportedly used to collect > additions throughout the page-building process, then output the results as a > group. > > > > > > You may specify a new script tag at any time. As noted above, these may > be links to outside resource files or scripts theselves. > > <?php // adding scripts > $this->headScript()->appendFile('/js/prototype.js') > ->appendScript($onloadScript); > ?> > > > > So you'd think by the description in the manual and by the name of the > helper, that it's doing something special to inject the results into the > header of the output. > > But I see no evidence of that after attempting to use it. These "head" > helpers are nothing of the sort. They're only containers that get echoed to > the output stream as soon as the reference is encountered: > > <?= $this->headScript() ?> > <?= $this->headLink() ?> > > How is that useful? The calls to $this->headScript()->prependXXX() are > processed later in the .phtml file, so that content never gets rendered? > > If this mechanism worked as expected, all the calls to these headXXX helpers > in all views of the layout would be collected and automatically injected > into the <head> section upon completion of the output, but before being sent > to the client. > > No special code would be needed in the application's layout or view to > output it (which just breaks the mechanism, as we have seen, because the > *current* contents of the headXXX helper get output, rather than the > *future* contents as expected). > > What am I missing? Is there an easy way to tweak ZF to get the expected > behavior? > > > > -- > > Kevin McArthur > > StormTide Digital Studios Inc. > Author of the recently published book, "Pro PHP" > http://www.stormtide.ca >