Revision: 11472
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at February 6, 2009 10:07 by ping_ch
Initial Code
<?php /** * Element Helper * Helps formatting strings with custom markup * * @author Stefan Zollinger * @license MIT * @version 1.0 */ class ElementHelper extends Helper { /** * The base directory containing your elements. * Set to '' to include all elements in your views/elements folder */ var $baseDir = 'templates'; /** * Applies all the formatting defined in this helper * to $str * (Currently only $this->getElements() ) * * @return $str Formatted string * @param string $str */ function format($str) { $str =& $this->getElements($str); return $str; } /** * * Replaces [element:element_name] tags in a string with * output from cakephp elements * Options can be defined as follows: * [element:element_name id=123 otherVar=var1 nextvar="also with quotes"] * [e:element_name] * * @return formatted string * @param $str string */ function getElements(&$str){ $View =& ClassRegistry::getObject('view'); preg_match_all('/\[(element|e):([A-Za-z0-9_\-]*)(.*?)\]/i', $str, $tagMatches); for($i=0; $i < count($tagMatches[1]); $i++){ $regex = '/(\S+)=[\'"]?((?:.(?![\'"]?\s+(?:\S+)=|[>\'"]))+.)[\'"]?/i'; preg_match_all($regex, $tagMatches[3][$i], $attributes); $element = $tagMatches[2][$i]; $options = array(); for($j=0; $j < count($attributes[0]); $j++){ $options[$attributes[1][$j]] = $attributes[2][$j]; } $str = str_replace($tagMatches[0][$i], $View->element($this->baseDir.DS.$element,$options), $str); } return $str; } } ?>
Initial URL
element-helper
Initial Description
Initial Title
Element helper for CakePHP
Initial Tags
cakephp
Initial Language
PHP