public function renderElement($name, &$info) { $elementData = $info; if (isset($elementData['form'], $elementData['form']['type']) && array_key_exists($elementData['form']['type'], $this->rules)) { $elementData['form'] = array_merge_recursive($this->rules[$elementData['form']['type']], $elementData['form']); } else { throw new Exception('FormDecorator -> renderElement -> data is undefined'); return; } if (isset($elementData['visible']) && $elementData['visible'] == false) { return; } $elementData['form']['attr']['name'] = $name; $elementName = $name; $elementData['value'] = isset($_POST[$name]) ? $_POST[$name] : null; if (isset($elementData['editable']) && $elementData['editable'] == false) { // @TODO RENDER AS HIDDEN ELEMENTS $elementData['render']['html'] = isset($_POST[$elementName]) ? $_POST[$elementName] : ''; } // search variables $searchPatches = ['form/render/html', 'form/attr/class', 'form/view/default', 'form/view/error']; $searchString = ''; foreach ($searchPatches as $path) { $searchString .= K_Library::arrayPathSearch($elementData, $path, true); } $vars = []; $matches = []; if (preg_match_all('/(?<name>\\{(?<var>[a-z0-9\\_\\-\\/\\*]+)(?<method>[\\:][sn*])?\\})/is', $searchString, $matches) && count($matches['var'])) { for ($i = 0; $i < count($matches['var']); $i++) { $varValue = K_Library::arrayPathSearch($elementData, $matches['var'][$i], $matches['method'][$i] == ':s' ? true : false); if (empty($varValue)) { if ($matches['method'][$i] === ':n') { // show 'null' on null ;) $varValue = 'null'; } else { $varValue = ''; } } $vars[$matches['name'][$i]] = $varValue; } foreach ($vars as &$varValue) { if (is_string($varValue)) { $varValue = strtr($varValue, $vars); } else { $varValue = strtr(K_Library::buildVariableValue($varValue, true), $vars); } } } var_dump($vars); echo '<br><br><br>'; var_dump($elementData); //K_Library::arrayPathSearch(); }