/** * add subform element to stack * * @param Zend_Form $form * @return Centurion_Form_DisplayGroup */ public function addSubForm(Zend_Form $form) { $this->_subForms[$form->getName()] = $form; $this->_orders[$form->getName()] = count($this->_order); $this->_groupUpdated = true; return $this; }
public function testSetNameNormalizesValueToContainOnlyValidVariableCharacters() { $this->form->setName('f%\\o^&*)o\\(%$b#@!.a}{;-,r'); $this->assertEquals('foobar', $this->form->getName()); $this->setExpectedException('Zend\\Form\\Exception\\InvalidArgumentException', 'Invalid name provided'); $this->form->setName('%\\^&*)\\(%$#@!.}{;-,'); }
/** * Returns the HTML for creating a form powered by JavaScript (or straight one). * The CSS, JS and other is included. * * @param Zend_Form $form The form object * @param Boolean $jsStayOnPage Should we post as a service and stay on the same page * @param String $srvurl The URL to post the data to or NONE will build the URL automatically */ public function FormAdminGeneric(Zend_Form $form, $jsStayOnPage = true, $srvurl = '') { $formname = $form->getName(); if ($srvurl == '') { $srvurl = '/' . $this->view->moduleName . '/services/edit' . $formname . '/format/json'; } $form->setAction($srvurl); $html = ''; if ($jsStayOnPage) { $html .= ' <script> $(function(){ $(\'#' . $formname . '\').formvalidator({\'url\':\'' . $srvurl . '\'}); }); </script> '; } $html .= ' <div class="box"> <fieldset> ' . $form . ' </fieldset> </div> '; return $html; }
/** * Render form * * @return string */ public function __toString() { $view = $this->view; $rows = array(); foreach ($this->_form as $element) { $label = null; if ($labelText = $element->getLabel()) { if ($element instanceof Zend_Form_Element_Submit) { $element->setValue($labelText); } else { $label = $view->formLabel($element->getName(), $labelText, $element->getAttribs()); } } $el = $view->aElement($element); $errorList = null; if ($errors = $element->getMessages()) { $errorList = $view->formErrors($errors); } $rows[] = '<div class="form-title">' . $label . '</div>' . '<div class="form-field">' . $el . '</div>' . $errorList; } $list = $view->htmlList($rows, false, array('class' => 'form-list'), false); $output = $view->form($this->_form->getName(), $this->_form->getAttribs(), $list); if ($this->_ajaxParams) { $id = $this->_form->getName(); $view->headScript()->appendFile($view->baseUrl($this->_aFormPath)); $view->headScript()->appendScript('$(function(){ $("#' . $id . '").aForm(' . Zend_Json::encode($this->_ajaxParams) . ') })'); } return $output; }
public function testSetNameNormalizesValueToContainOnlyValidVariableCharacters() { $this->form->setName('f%\\o^&*)o\\(%$b#@!.a}{;-,r'); $this->assertEquals('foobar', $this->form->getName()); try { $this->form->setName('%\\^&*)\\(%$#@!.}{;-,'); $this->fail('Empty names should raise exception'); } catch (Zend_Form_Exception $e) { $this->assertContains('Invalid name provided', $e->getMessage()); } }
/** * Construct the bridge while setting the model. * * Extra parameters can be added in subclasses, but the first parameter * must remain the model. * * @param \MUtil_Model_ModelAbstract $model * @param \Zend_Form $form Rquired */ public function __construct(\MUtil_Model_ModelAbstract $model, \Zend_Form $form = null) { $this->model = $model; $this->form = $form; if (!$form instanceof \Zend_Form) { throw new \MUtil_Model_ModelException("No form specified while create a form bridge for model " . $model->getName()); } if (!$form->getName()) { $form->setName($model->getName()); } }
public function __construct(Zend_Form $form) { parent::__construct(); $this->view = Zend_Layout::getMvcInstance()->getView(); $this->formName = $form->getName(); $elementsBelongTo = $form->getElementsBelongTo(); $this->elementPrefix = ''; if ($elementsBelongTo) { $this->elementPrefix = Zmz_Utils::stripFormArrayNotation($elementsBelongTo); $this->elementPrefix .= '-'; } $this->init(); }
/** * Recurse through a form object, rendering errors * * @param Zend_Form $form * @param Zend_View_Interface $view * @return string */ protected function _recurseForm(Zend_Form $form, Zend_View_Interface $view) { $content = ''; $errors = $form->getMessages(); if ($form instanceof Zend_Form_SubForm) { $name = $form->getName(); if (1 == count($errors) && array_key_exists($name, $errors)) { $errors = $errors[$name]; } } if (empty($errors)) { return $content; } foreach ($errors as $name => $list) { $element = $form->{$name}; if ($element instanceof Zend_Form_Element) { $element->setView($view); $content .= $this->getMarkupListItemStart() . $this->renderLabel($element, $view) . $view->formErrors($list, $this->getOptions()) . $this->getMarkupListItemEnd(); } elseif (!$this->ignoreSubForms() && $element instanceof Zend_Form) { $content .= $this->getMarkupListStart() . $this->_recurseForm($element, $view) . $this->getMarkupListEnd(); } } return $content; }
/** * Add a form group/subform * * @param Zend_Form $form * @param string $name * @param int $order * @return Zend_Form */ public function addSubForm(Zend_Form $form, $name, $order = null) { $name = (string) $name; /** @var Zend_Loader_PluginLoader $loader */ foreach ($this->_loaders as $type => $loader) { $loaderPaths = $loader->getPaths(); foreach ($loaderPaths as $prefix => $paths) { foreach ($paths as $path) { $form->addPrefixPath($prefix, $path, $type); } } } if (!empty($this->_elementPrefixPaths)) { foreach ($this->_elementPrefixPaths as $spec) { list($prefix, $path, $type) = array_values($spec); $form->addElementPrefixPath($prefix, $path, $type); } } if (!empty($this->_displayGroupPrefixPaths)) { foreach ($this->_displayGroupPrefixPaths as $spec) { list($prefix, $path) = array_values($spec); $form->addDisplayGroupPrefixPath($prefix, $path); } } if (null !== $order) { $form->setOrder($order); } if (($oldName = $form->getName()) && $oldName !== $name && $oldName === $form->getElementsBelongTo()) { $form->setElementsBelongTo($name); } $form->setName($name); $this->_subForms[$name] = $form; $this->_order[$name] = $order; $this->_orderUpdated = true; return $this; }
public function testCanSetObjectStateByPassingConfigObjectToConstructor() { $config = new Zend_Config($this->getOptions()); $form = new Zend_Form($config); $this->assertEquals('foo', $form->getName()); $this->assertEquals('someform', $form->getAttrib('class')); $this->assertEquals('/foo/bar', $form->getAction()); $this->assertEquals('put', $form->getMethod()); }
protected function _buildTable(Zend_Form $form) { # generate table header if ($this->_tableHeadersBuilt !== true) { if ($form instanceof Zend_Form_SubForm) { foreach ($form->getElements() as $eName => $e) { if (isset($this->_tableHeaders[$eName])) { throw new Exception(sprintf('Invalid sub-form (table row configuration) "%s" for table layout - table header already set for this column "%s"', $form->getName(), $eName)); } $this->_tableHeaders[$eName] = $e->getLabel(); } foreach ($form->getSubForms() as $formName => $subForm) { $this->_buildTable($subForm); } return false; } # get headers from first sub-form $subform = $form->getSubForms(); $subform = current($subform); $this->_buildTable($subform); $this->_tableHeadersBuilt = true; } if ($form instanceof Zend_Form_SubForm) { foreach ($form->getElements() as $eName => $e) { if ($this->getOption('doNotSetDecorators') !== true) { $e->setDecorators(array('ViewHelper')); } if (isset($this->_tableCell[$eName])) { throw new Exception(sprintf('Invalid sub-form (table row configuration) "%s" for table layout - table cell "%s" already set for row %d', $form->getName(), $eName, $this->_rowIndex)); } $this->_tableCell[$eName] = $e; } foreach ($form->getSubForms() as $formName => $subForm) { $this->_buildTable($subForm); } return; } # $form is not instance of Zend_Form_SubForm $result = array(); foreach ($form->getSubForms() as $formName => $subForm) { $this->_tableCell = array(); $this->_rowIndex++; $this->_buildTable($subForm); if (empty($this->_tableCell)) { # no data generated from current subform continue; } $result[$this->_rowIndex] = $this->_tableCell; } if (empty($result)) { return ''; } $tableRows = array(); foreach ($result as $rowIndex => $row) { $elements = array(); foreach ($this->_tableHeaders as $eName => $label) { if (!isset($row[$eName])) { throw new Exception(sprintf('Invalid form "%s" for table layout - missing table cell "%s" for row %d', $form->getName(), $eName, $rowIndex)); } # display messages in the same table cell as the input field $elements[] = implode('<br />', array_merge($row[$eName]->getMessages(), array($row[$eName]->render()))); } $tableRows[] = '<tr><td>' . implode('</td><td>', $elements) . '</td></tr>' . "\n"; } return '<table><tr><th>' . implode('</th><th>', $this->_tableHeaders) . '</th></tr>' . "\n" . implode('', $tableRows) . '</table>'; }
/** * Set values for an action * * @param Zend_Form $form * @param boolean $valid * @return Zend_Controller_Action_Helper_MultiPageForm */ public function setValues(Zend_Form $form, $valid = false) { $formName = $form->getName(); // Check if the provided form is part of the subform chain if (!$this->isSubForm($formName)) { /** * @see Zend_Controller_Action_Exception */ require_once 'Zend/Controller/Action/Exception.php'; throw new Zend_Controller_Action_Exception('"' . $formName . '" is not a valid subform'); } // Get the form values and their element names $formValues = $form->getValues(); $formKeys = array_keys($formValues); // Loop through the element names to see if there are action elements (default prefixed with _) foreach ($formKeys as $key) { // If an element with the action prefix is found, remove it from the array. if (strpos($key, $this->_navigationElements[self::ACTION_PREFIX]) === 0) { // We don't want to store actions in the session. unset($formValues[$key]); } } // Elaborate setup to write some values to the session arrays // This is needed to work around a bug/feature in PHP 5.2.0 iirc $validForms = $this->_session->valid; $sessionFormValues = $this->_session->value; $validForms[$formName] = (bool) $valid; $sessionFormValues[$formName] = $formValues[$formName]; // Write the validation state and form values to the session $this->_session->valid = $validForms; $this->_session->value = $sessionFormValues; // Chaining return $this; }
/** * Add a form group/subform * * @param Zend_Form $form * @param string $name * @param int $order * @return Zend_Form */ public function addSubForm(Zend_Form $form, $name = null, $order = null) { if (!$name) { $name = $form->getName(); } $form->setParent($this); return parent::addSubForm($form, $name, $order); }
/** * Set values for an action * * @param Zend_Form $values * @param boolean $valid * @return Zym_Controller_Action_Helper_MultiForm */ public function setValues(Zend_Form $form, $valid = false) { $action = $form->getName(); if (!$this->isSubformAction($action)) { /** * @see Zym_Controller_Action_Helper_MultiPageForm_Exception_InvalidAction */ require_once 'Zym/Controller/Action/Helper/MultiPageForm/Exception/InvalidAction.php'; $message = sprintf('"%s" is not a valid action', $action); throw new Zym_Controller_Action_Helper_MultiPageForm_Exception_InvalidAction($message); } $formValues = $form->getValues(); $formKeys = array_keys($formValues); foreach ($formKeys as $key) { if (strpos($key, self::ACTION_PREFIX) === 0) { unset($formValues[$key]); } } $this->_session->valid[$action] = (bool) $valid; $this->_session->value[$action] = $formValues; return $this; }