Zend_form Decorator aan element toevoegen.

Status
Niet open voor verdere reacties.

blackeagle67

Gebruiker
Lid geworden
13 okt 2009
Berichten
158
Beste mensen,

Ik ben op zoek naar een stuk code waarbij een custom decorator word gebruikt om extra elementen te wrappen om een input element.
Ik kan dit handmatig doen maar het zou vele makkelijker wezen als dit in een custom decorator kan komen.

De code om dit handmatig te doen is:

PHP:
$title->setDecorators(array(
					'ViewHelper',
					'Description',
					'Errors',
					array(array('top-left' => 'HtmlTag'), array('tag' => 'div', 'class' => 'content-border-corner-top-left')),
					array(array('top-right' => 'HtmlTag'), array('tag' => 'div', 'class' => 'content-border-corner-top-right')),
					array(array('top-center' => 'HtmlTag'), array('tag' => 'div', 'class' => 'content-border-top-center')),
					array(array('bottom-left' => 'HtmlTag'), array('tag' => 'div', 'class' => 'content-border-corner-bottom-left')),
					array(array('bottom-right' => 'HtmlTag'), array('tag' => 'div', 'class' => 'content-border-corner-bottom-right')),
					array(array('bottom-center' => 'HtmlTag'), array('tag' => 'div', 'class' => 'content-border-bottom-center')),
					array(array('left' => 'HtmlTag'), array('tag' => 'div', 'class' => 'content-border-left')),
					array(array('right' => 'HtmlTag'), array('tag' => 'div', 'class' => 'content-border-right')),
					array(array('dd' => 'HtmlTag'), array('tag' => 'dd', 'id' => $title->getLabel().'-element')),
					array('Label', array('tag' => 'dt')),
				));

Ik ben het momenteel op verschillende manieren aan het proberen en dit is dan wat ik momenteel probeer maar dit werkt dus niet :(

PHP:
class Form_Decorator_Borders extends Zend_Form_Decorator_Abstract
{

	public function render($content)
	{
		$element	= $this->getElement();			// get form
		$elements	= $element->getElements();		// get form elements
		$placement	= $this->getPlacement();
        $name		= htmlentities($element->getFullyQualifiedName());
        $id			= htmlentities($element->getId());
		
		foreach ($elements as $k => $v) {
			if (is_object($v) && get_class($v) == "Zend_Form_Element_Text") {
				$helper = $elements[$k]->helper;
				$elements[$k]->setDecorators(array(
					'ViewHelper',
					'Description',
					'Errors',
					array(array('top-left' => 'HtmlTag'), array('tag' => 'div', 'class' => 'content-border-corner-top-left')),
					array(array('top-right' => 'HtmlTag'), array('tag' => 'div', 'class' => 'content-border-corner-top-right')),
					array(array('top-center' => 'HtmlTag'), array('tag' => 'div', 'class' => 'content-border-top-center')),
					array(array('bottom-left' => 'HtmlTag'), array('tag' => 'div', 'class' => 'content-border-corner-bottom-left')),
					array(array('bottom-right' => 'HtmlTag'), array('tag' => 'div', 'class' => 'content-border-corner-bottom-right')),
					array(array('bottom-center' => 'HtmlTag'), array('tag' => 'div', 'class' => 'content-border-bottom-center')),
					array(array('left' => 'HtmlTag'), array('tag' => 'div', 'class' => 'content-border-left')),
					array(array('right' => 'HtmlTag'), array('tag' => 'div', 'class' => 'content-border-right')),
					array(array('dd' => 'HtmlTag'), array('tag' => 'dd', 'id' => $elements[$k]->getLabel().'-element')),
					array('Label', array('tag' => 'dt')),
				));
			}
		}
		
		$element->setElements($elements);
		$this->setElement($element);
		
		$output = "";
		$this->setElement($element);
		switch($placement)
		{
			case "PREPEND":
				return $output . $this->getElement()->getView()->render($name);
			case "APPEND":
			default:
				return $content;
		}
	}

}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan