Exemple #1
0
    public function formMultiLevel2($name, $value = null, $attributes = array())
    {
        $xhtml = array();
        // CODE HERE
        $xhtml[] = '<input type="hidden" name="' . $name . '" value="' . $value . '" id="id_' . $name . '" />
			
		';
        $model_class = $attributes['model'];
        $module = $attributes['module'];
        if (!$model_class) {
            throw new Exception('model is requirement');
        }
        $isSearch = isset($attributes['isSearch']) ? (int) $attributes['isSearch'] : 0;
        $model = new $model_class();
        $item = $model->find((int) $value)->current();
        $level = 0;
        $lastname = '';
        $onchange = isset($attributes['onchange']) ? $attributes['onchange'] : "en4.ynevent.changeCategory(\$(this),'{$name}','{$model_class}','{$module}',{$isSearch},0)";
        if (!is_object($item)) {
            $options = $model->getMultiOptions(0);
            $i = 0;
            $lastname = sprintf("%s_%s", $name, 0);
            $element = new Zend_Form_Element_Select($lastname, array('multiOptions' => $options, 'onchange' => $onchange));
            $xhtml[] = '<div id="id_wrapper_' . $name . '_' . $i . '">' . $element->renderViewHelper() . '</div>';
            $i = 1;
        } else {
            $nodes = $item->getBreadCrumNode();
            $i = 0;
            foreach ($nodes as $node) {
                $lastname = sprintf("%s_%s", $name, $i);
                $options = $model->getMultiOptions($node->parent_id);
                $element = new Zend_Form_Element_Select($lastname, array('multiOptions' => $options, 'onchange' => $onchange, 'value' => $node->getIdentity()));
                $style = 'style="margin-top: 8px;"';
                $xhtml[] = '<div ' . $style . ' id="id_wrapper_' . $name . '_' . $i . '" >' . $element->renderViewHelper() . '</div>';
                ++$i;
            }
        }
        $level = $model->getMaxLevel();
        for (; $i < $level; ++$i) {
            $xhtml[] = '<div id="id_wrapper_' . $name . '_' . $i . '" style = "display: none">' . '<!-- wrapper at level ' . $i . '-->' . '</div>';
        }
        $xhtml[] = '<script type="text/javascript">' . 'window.addEvent("domready",function(){' . "en4.{$module}.changeCategory(\$('{$lastname}'),'{$name}','{$model_class}','{$module}',{$isSearch},1)});" . '</script>';
        $xhtml = implode(PHP_EOL, $xhtml);
        return $xhtml;
    }
 public function changeAction()
 {
     $category_id = $this->_getParam('id');
     $model_class = $this->_getParam('model');
     $name = $this->_getParam('name');
     $level = $this->_getParam('level');
     $isSearch = (int) $this->_getParam('isSearch', 0);
     $model = new $model_class();
     $item = $model->find((string) $category_id)->current();
     if ($category_id == '' || $category_id == '0') {
         return '';
     }
     $options = $model->getMultiOptions($item->getIdentity());
     if (count($options) < 2) {
         return;
     }
     $route = 'book';
     $element = new Zend_Form_Element_Select(sprintf("%s_%s", $name, $level + 1), array('multiOptions' => $options, 'required' => false, 'onchange' => "en4.book.changeCategory(\$(this),'" . $name . "','" . $model_class . "','" . $route . "',{$isSearch},0)"));
     echo $element->renderViewHelper();
 }