【问题标题】:Style form elements in Zend Framework with a default styleZend Framework 中使用默认样式的表单元素样式
【发布时间】:2009-03-14 17:08:25
【问题描述】:

我目前正在使用自定义 CSS 类对表单元素进行样式设置,以对文本输入进行不同的样式设置,如下所示:

$submit = new Zend_Form_Element_Submit('login');
$submit->setLabel('Log in')
    ->setAttrib('class', 'submit');

$username = new Zend_Form_Element_Text('username');
$username->setLabel('Username')
    ->setAttrib('class', 'textinput');

但是假设我有多个表单,并且希望默认使用textinput 设置所有文本元素的样式,并且默认使用submit 设置所有提交元素。无论如何要在全球范围内这样做吗?

【问题讨论】:

    标签: css zend-framework forms


    【解决方案1】:

    使用 CSS 来设置元素的样式,而不是在每个不同类型的对象上设置类:

    input[type="submit"] {
        /* Here goes the stuff that you put in your submit class */
    }
    
    input[type="text"] {
        /* here goes the stuff you put in your textinput class */
    }
    
    textarea {
        /* here goes the stuff for a text area */
    }
    

    这将做你想做的事,而且你不必对 Zend 框架默认的帮助器进行子类化。此外,它会输出更少的 HTML,因此您的页面会更小,并且 CSS 可以重复用于页面上的每个输入元素。

    【讨论】:

    • 我知道我可以使用 CSS 设置元素的样式,但如果我记得正确并且 reference.sitepoint.com/css/attributeselector 也是正确的,那么属性选择器在 IE 中将不起作用。因此我不能使用这个解决方案。
    • mobmad:看看 Dean Edwards 的 ie7-js 以解决 IE 在选择器方面的问题!
    【解决方案2】:

    我不是 Zend 专家,但我猜你可以子类化每个 Zend_Form_Element_* 类并设置你想在它们的构造函数中设置的属性 - 即 Zend_Form_Element_Text_Yatta 中的子类 Zend_Form_Element_Text;然后将属性“类”设置为 'textinput' 在它的构造函数中。

    【讨论】:

    • Zend_Framework 有一个非常具体的命名方案,使用户更容易继承和覆盖默认的 zend 助手及其类。
    猜你喜欢
    • 2010-12-03
    • 1970-01-01
    • 2018-11-12
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-20
    相关资源
    最近更新 更多