2009-10-16 86 views
0

我proting基于梨形到Zend的形式几个问题。移植模板Zend框架

我有我需要的几个要素:

  • 基本元素
  • 族元素
  • 我以前用过的模板上呈现梨的形式。我显然不能使用预先存在的zend装饰器,因为我需要为我的基础元素的每个组件指定css类。 要见我需要使这个问题,这是一个基本元素的模板:

    <li class = "{position_in_the_form} {error}"> 
        <label class="{label_class}"> {label} 
        [<span class="required_class"> * </span>] 
        </label> 
        <div> {element_content} </div> 
        [<p class = "{error_class}"> {error_message} </p>] 
    </li> 
    

    所以你可以看到我有很多动态的东西,我希望能够指定:位置的形式,标签的类,所需部分的类,错误的类。 我也想能够从一个ini文件中指定。我设法从ini设置基本元,但不是自定义字段。

    我不能使用基本装饰器的原因之一是,当元素或子模型中存在错误时,我需要在“li”类中出现“错误”。我不确定这可能与错误装饰...(纠正我,如果我错了)

    此外,该组我需要的东西处理错误,并且由于核心组不处理错误,我需要继承sub_form。但是,如何在ini文件中创建子表单,并且我不知道如何在ini中为子表单提供参数。

    这里的主要思想是能够具有在形式元素的可视化和逻辑组。例如,我需要一个包含全名,中间名等的“名称”组。这也意味着这个“名称”组的全局验证器。 的另一件事是,我希望能够定位这些群体:左前卫,右前卫,充满 我的CSS为此做好准备,并与梨的工作。

    所以我需要的是一个简单的解决办法,很少的代码和INI配置。不幸的是,我想我陷入了太复杂的事情,所以如果有人对简单的体系结构有任何想法,那就太棒了!

    预先感谢您的帮助, 最佳,鲍里斯

    回答

    0

    在你繁复的装饰需求,你可能想使用ViewScript Zend_Form_Element_Decorator

    $element->setDecorators(array(
         array('ViewScript', array('viewScript' => 'path/to/your/views/element.phtml')), 
    )); 
    

    ,然后在path/to/your/views/element.phtml,更多的或类似的东西少

    <li class="<?php echo $this->element->getAttrib('position_in_the_form') ?> <?php echo $this->element->hasErrors() ? 'error' : '' ?>"> 
        <label class="<?php echo $this->element->getAttrib('label_class') ?>"> 
         <?php echo $this->formLabel($this->element->getName(), 
             $this->element->getLabel()) ?> 
        <? if ($this->element->isRequired()) { ?> 
         [<span class="required_class"> * </span>] 
        <? } ?> 
        </label> 
        <div> <?php echo $this->{$this->element->helper}(
         $this->element->getName(), 
         $this->element->getValue(), 
         $this->element->getAttribs() 
    ) ?> </div> 
        <? if ($this->element->hasErrors()) { ?> 
         [<p class="<?php echo $this->element->getAttrib('error_class') ?>"> <?php echo $this->formErrors($this->element->getMessages()) ?> </p>] 
        <? } ?> 
    </li> 
    

    这是只有一个drafty snippe t的代码,但应该引导你在你的目标方向。

    Regards