![]() |
|
Snippets |
|
I'm not sure how useful these will be, but I came up with the idea, so I figured I'd post them as well.
<table> <?php foreach ($vars as $key => $value): ?> <tr> <th><?php include_fragment('label', array('id' => $key, 'object' => $value))) ?></th> <td><?php include_fragment('input', array('id' => $key, 'object' => $value))) ?></td> </tr> <?php endforeach; ?> </table>
These helpers use the fragment idea from http://www.symfony-project.com/snippets/snippet/124 and take it a step further. There's a difference here, however, that's important to note:
Note: Unlike partials, these fragments will have absolutely no variables available, unless explicitly passed in. Templating variables provided by symfony will not be available, due to php's scope handling when inside of functions. That's why my previous snippet used include(fragment_name('myfragment')) instead, which gave the fragment access to all currently in-scope variables.
<?php /** * Includes a template fragment. * This function is similar in nature to include_partial, * but does not use sfView, and therefore has virtually no overhead. * * <strong>Example</strong> * <code> * include_fragment('mypartial'); * </code> * * @param string fragment name * @return void * @see include_partial, get_fragment, fragment_path, fragment_name */ function include_fragment($templateName, $vars = array()) { echo get_fragment($templateName, $vars); } /** * Evaluates and returns a template fragment. * The syntax is similar to that of include_fragment. * * <strong>Example</strong> * <code> * echo get_fragment('mypartial'); * </code> * * @param string fragment name * @return string result of a fragment include * @see include_partial, include_fragment, fragment_path, fragment_name */ function get_fragment($templateName, $vars = array()) { // start the output buffer ob_start(); ob_implicit_flush(0); // extract the variables in the scope of this function extract($vars); // include the file include(fragment_path($templateName)); // clear the output buffer, and return the content return ob_get_clean(); }
Remember: you can place this in myproject/apps/myapp/lib/helper/PartialPlusHelper.php
Then you can use it with <?php use_helper('PartialPlus') ?>