Skip to content

Joy – my application

This is my application


Zend Framework – Creating a Layout

There are two design patterns that Zend Framework uses to implement layouts: » Two Step View and » Composite View. Two Step View is usually associated with the » Transform View pattern; the basic idea is that your application view creates a representation that is then injected into the master view for final transformation. The Composite View pattern deals with a view made of one or more atomic, application views.
In Zend Framework, Zend_Layout combines the ideas behind these patterns. Instead of each action view script needing to include site-wide artifacts, they can simply focus on their own responsibilities.
Occasionally, however, you may need application-specific information in your site-wide view script. Fortunately, Zend Framework provides a variety of view placeholders to allow you to provide such information from your action view scripts.
To get started using Zend_Layout, first we need to inform our bootstrap to use the Layout resource. This can be done using the zf enable layout command:
1. % zf enable layout
2. Layouts have been enabled, and a default layout created at
3. application/layouts/scripts/layout.phtml
4. A layout entry has been added to the application config file.
As noted by the command, application/configs/application.ini is updated, and now contains the following within the production section:
1. ; application/configs/application.ini
3. ; Add to [production] section:
4. resources.layout.layoutPath = APPLICATION_PATH “/layouts/scripts”
The final INI file should look as follows:
1. ; application/configs/application.ini
3. [production]
4. ; PHP settings we want to initialize
5. phpSettings.display_startup_errors = 0
6. phpSettings.display_errors = 0
7. includePaths.library = APPLICATION_PATH “/../library”
8. bootstrap.path = APPLICATION_PATH “/Bootstrap.php”
9. bootstrap.class = “Bootstrap”
10. appnamespace = “Application”
11. resources.frontController.controllerDirectory = APPLICATION_PATH “/controllers”
12. resources.frontController.params.displayExceptions = 0
13. resources.layout.layoutPath = APPLICATION_PATH “/layouts/scripts”
15. [staging : production]
17. [testing : production]
18. phpSettings.display_startup_errors = 1
19. phpSettings.display_errors = 1
21. [development : production]
22. phpSettings.display_startup_errors = 1
23. phpSettings.display_errors = 1
This directive tells your application to look for layout view scripts in application/layouts/scripts. If you examine your directory tree, you’ll see that this directory has been created for you now, with the file layout.phtml.
We also want to ensure we have an XHTML DocType declaration for our application. To enable this, we need to add a resource to our bootstrap.
The simplest way to add a bootstrap resource is to simply create a protected method beginning with the phrase _init. In this case, we want to initialize the doctype, so we’ll create an _initDoctype() method within our bootstrap class:
1. // application/Bootstrap.php
3. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
4. {
5. protected function _initDoctype()
6. {
7. }
8. }
Within that method, we need to hint to the view to use the appropriate doctype. But where will the view object come from? The easy solution is to initialize the View resource; once we have, we can pull the view object from the bootstrap and use it.
To initialize the view resource, add the following line to your application/configs/application.ini file, in the section marked production:
1. ; application/configs/application.ini
3. ; Add to [production] section:
4. resources.view[] =
This tells us to initialize the view with no options (the ‘[]’ indicates that the “view” key is an array, and we pass nothing to it).
Now that we have a view, let’s flesh out our _initDoctype() method. In it, we will first ensure the View resource has run, fetch the view object, and then configure it:
1. // application/Bootstrap.php
3. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
4. {
5. protected function _initDoctype()
6. {
7. $this->bootstrap(‘view’);
8. $view = $this->getResource(‘view’);
9. $view->doctype(‘XHTML1_STRICT’);
10. }
11. }
Now that we’ve initialized Zend_Layout and set the Doctype, let’s create our site-wide layout:
2. doctype() ?>
6. Zend Framework Quickstart Application
7. headLink()->appendStylesheet(‘/css/global.css’) ?>

22. layout()->content ?>
We grab our application content using the layout() view helper, and accessing the “content” key. You may render to other response segments if you wish to, but in most cases, this is all that’s necessary.
Note also the use of the headLink() placeholder. This is an easy way to generate the HTML for elements, as well as to keep track of them throughout your application. If you need to add additional CSS sheets to support a single action, you can do so, and be assured it will be present in the final rendered page.
Note: Checkpoint
Now go to “http://localhost” and check out the source. You should see your XHTML header, head, title, and body sections.

Hello world!

Welcome to After you read this, you should delete and write your own post, with a new title above. Or hit Add New on the left (of the admin dashboard) to start a fresh post.

Here are some suggestions for your first post.

  1. You can find new ideas for what to blog about by reading the Daily Post.
  2. Add PressThis to your browser. It creates a new blog post for you about any interesting  page you read on the web.
  3. Make some changes to this page, and then hit preview on the right. You can always preview any post or edit it before you share it to the world.