-- Kevin McArthur <[EMAIL PROTECTED]> wrote
(on Tuesday, 29 May 2007, 09:43 AM -0600):
> Surely, nested templates will have some sort of built-in basic 
> functionality. I dont know many PHP developers who use templates like 
> they're a series of concatenated strings. It just doesn't jive with the 
> nested nature of html.
> 
> Most PHP apps follow a standard/shared layout approach; so whats the 
> 'framework' way of handling common elements now? render header, content, 
> footer?

I use the Two Step View pattern. My applications render content to the
response object (just the application content, none of the site
skeleton), and then in a dispatchLoopShutdown() plugin I pull the
response content and inject it into a sitewide template, and finally
inject that rendered content back into the response object. I've
provided a sample of such a plugin in the past on either the fw-mvc or
fw-general list.


> ----- Original Message ----- 
> From: "Rob Allen" <[EMAIL PROTECTED]>
> To: <[email protected]>
> Sent: Tuesday, May 29, 2007 2:09 AM
> Subject: Re: [fw-general] ViewRenderer and nested templates
> 
> 
> >Kevin McArthur wrote:
> >>Hi Guys,
> >>
> >>I'm trying to upgrade several sites to 1.0 but my sites tend to use a
> >>main template (engine.tpl) plus a set of sub templates (actionName.tpl)
> >>(menu.tpl) etc... it seems fairly evident how to sub-render, but with
> >>outer most template always being the same file, how do you set this with
> >>the view renderer's automatic actions to set the $view->content variable
> >>to the actionName template automatically.
> >>
> >
> >
> >Currently, I'm exploring extending ViewRender's renderScript() to do
> >something similar.
> >
> >My first attempt looks like this:
> >
> >class My_Controller_Action_Helper_ViewRenderer
> >extends Zend_Controller_Action_Helper_ViewRenderer
> >{
> >   public function renderScript($script, $name = null)
> >   {
> >       if (null === $name) {
> >           $name = $this->getResponseSegment();
> >       }
> >       $content = $this->view->render($script);
> >
> >       $this->view->content = $content;
> >
> >       $layoutTemplate = 'site.tpl.php';
> >       $this->getResponse()->appendBody(
> >           $this->view->render($layoutTemplate),
> >           $name
> >       );
> >
> >       $this->setNoRender();
> >   }
> >}
> >
> >
> >I also have:
> >
> >   $viewRenderer = new My_Controller_Action_Helper_ViewRenderer();
> >   $viewRenderer->setViewSuffix('tpl.php');
> >   Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
> >
> >in my bootstrap before I first instantiate the front controller, so that
> >my ViewRenderer is used.
> >
> >
> >
> >
> >Regards,
> >
> >Rob...
> >
> 

-- 
Matthew Weier O'Phinney
PHP Developer            | [EMAIL PROTECTED]
Zend - The PHP Company   | http://www.zend.com/

Reply via email to