Skip to content

Instantly share code, notes, and snippets.

@ThaDafinser
Created April 15, 2013 12:12
Show Gist options
  • Save ThaDafinser/5387625 to your computer and use it in GitHub Desktop.
Save ThaDafinser/5387625 to your computer and use it in GitHub Desktop.
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2013 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
namespace LispBase\Form\View\Helper;
use Zend\Form\View\Helper\AbstractHelper;
use Zend\Form\FieldsetInterface;
use Zend\Form\FormInterface;
/**
* View helper for rendering hidden elements
*/
class FormHiddenAll extends AbstractHelper
{
/**
* All hidden elements
* @var array
*/
private $hiddenElements = array();
/**
* Invoke as function
*
* @param null|FormInterface $form
* @return Form
*/
public function __invoke(FormInterface $form = null)
{
if (!$form) {
return $this;
}
return $this->render($form);
}
/**
* Render all hidden elements
*
* @param FormInterface $form
* @return string
*/
public function render(FormInterface $form)
{
$this->searchHiddenElements($form->getElements());
$this->loopFieldsets($form->getFieldsets());
$formContent = '';
foreach($this->hiddenElements as $element){
$formContent.= $this->getView()->formHidden($element);
}
return $formContent;
}
private function loopFieldsets($fieldsets){
foreach($fieldsets as $fieldset){
$this->searchHiddenElements($fieldset->getElements());
//Fieldsets can also contain fieldsets...so do this recursive...
$this->loopFieldsets($fieldset->getFieldsets());
}
}
private function searchHiddenElements($elements){
foreach($elements as $element){
if($element instanceof \Zend\Form\Element\Hidden || $element instanceof \Zend\Form\Element\Csrf){
$this->hiddenElements[] = $element;
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment