代码之家  ›  专栏  ›  技术社区  ›  Richard Knop

在表单元素后面添加文本/html?

  •  1
  • Richard Knop  · 技术社区  · 15 年前

    如何在Zend框架中的表单元素后面添加文本?假设我有一个文本输入字段,首先有一个标签,标签下面有一个实际的输入字段,但是我想在输入字段后面添加一些额外的文本(2-3句话)。比如一个简短的提示或建议,什么是该领域的最佳价值。

    3 回复  |  直到 15 年前
        1
  •  1
  •   Gordon Haim Evgi    15 年前

    您可以简单地向输入元素添加描述,例如

    $element = new Zend_Form_Element_Text('itemName', array(
          'label' => 'My Label',
          'description' => 'Enter some text'
    ));
    

    摘自ZF手册第23.7.3章。 Zend_Form_Decorator_Description :

    默认情况下,如果不存在描述,则不会生成输出。如果存在描述,则默认情况下,它被包装在HTML P标记中,但您可以通过在创建decorator或调用settag()时传递标记选项来指定标记。您还可以使用class选项或通过调用setClass()为标记指定一个类;默认情况下,使用类“hint”。

    所以要修改这个装饰器,你需要写一些

    $element->setDecorators(
        array(
            'ViewHelper',
            'Errors',
            array('Description', array('placement' => 'append', 
                                       'escape' => false, 
                                       'tag' => 'span')),
            array('HtmlTag', array('tag' => 'dd')),
            array('Label', array('tag' => 'dt', 'escape' => false))
     )); 
    

    您可能还需要检查 this series of tutorials about Zend Form Decorators .

        2
  •  1
  •   David Snabel-Caunt    15 年前

    您可以将description选项用作元素选项,在元素(使用默认装饰器)后面添加带有说明的<p>标记。

    然后,您的策略只需要一些CSS来将描述定位到正确的位置。类似的东西

    dd.myelement{
    position: relative;
    }
    
    dd.myelement p {
    position: absolute;
    top:0;
    right: 0;
    }
    

    您可能需要输入和p上的z-index属性:

    dd.myelement p {
    z-index: 1;
    }
    
    dd.myelement input {
    z-index: 2;
    }
    

    可能缺少一个CSS属性(我是从内存中编写的),但我希望您能理解这个想法:)

        3
  •  1
  •   Till    15 年前

    李察

    你需要一个装饰师!:)它们有时有点复杂,但我一直在使用以下内容 tutorial 这可能有点过时,但也同样有用。特别是检查 legend . 我觉得这很适合你想做的事情。

    希望这有帮助!