* // in view script: * echo $this->element->getLabel(); * * * Any options other than separator, placement, and viewScript are passed to * the partial as local variables. * * @category Zend * @package Zend_Form * @subpackage Decorator * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License * @version $Id: ViewScript.php 20096 2010-01-06 02:05:09Z bkarwin $ */ class Zend_Form_Decorator_ViewScript extends Zend_Form_Decorator_Abstract { /** * Default placement: append * @var string */ protected $_placement = 'APPEND'; /** * View script to render * @var string */ protected $_viewScript; /** * Set view script * * @param string $script * @return Zend_Form_Decorator_ViewScript */ public function setViewScript($script) { $this->_viewScript = (string) $script; return $this; } /** * Get view script * * @return string|null */ public function getViewScript() { if (null === $this->_viewScript) { if (null !== ($element = $this->getElement())) { if (null !== ($viewScript = $element->getAttrib('viewScript'))) { $this->setViewScript($viewScript); return $viewScript; } } if (null !== ($viewScript = $this->getOption('viewScript'))) { $this->setViewScript($viewScript) ->removeOption('viewScript'); } } return $this->_viewScript; } /** * Render a view script * * @param string $content * @return string */ public function render($content) { $element = $this->getElement(); $view = $element->getView(); if (null === $view) { return $content; } $viewScript = $this->getViewScript(); if (empty($viewScript)) { require_once 'Zend/Form/Exception.php'; throw new Zend_Form_Exception('No view script registered with ViewScript decorator'); } $separator = $this->getSeparator(); $placement = $this->getPlacement(); $vars = $this->getOptions(); $vars['element'] = $element; $vars['content'] = $content; $vars['decorator'] = $this; $renderedContent = $view->partial($viewScript, $vars); // Get placement again to see if it has changed $placement = $this->getPlacement(); switch ($placement) { case self::PREPEND: return $renderedContent . $separator . $content; case self::APPEND: return $content . $separator . $renderedContent; default: return $renderedContent; } } }