【发布时间】:2011-09-28 05:35:46
【问题描述】:
我正在开发一个 Zend 表单应用程序,其中我的表单包含带水印的文本框。
我们可以通过以下代码在 HTML 中实现这一点:
<input type="text" placeholder="Search" name="q" />
我的问题是如何使用 Zend 表单在我的输入框中添加占位符属性?
【问题讨论】:
标签: php html zend-framework placeholder
我正在开发一个 Zend 表单应用程序,其中我的表单包含带水印的文本框。
我们可以通过以下代码在 HTML 中实现这一点:
<input type="text" placeholder="Search" name="q" />
我的问题是如何使用 Zend 表单在我的输入框中添加占位符属性?
【问题讨论】:
标签: php html zend-framework placeholder
我认为你可以在定义元素时像这样在你的元素上调用 settAttrib()
$element->setAttrib ( 'placeholder', 'search' );
【讨论】:
在 Zend_Form_Element 对象上,您可以指定属性:
$element->setAttrib('placeholder', 'Search');
【讨论】:
已经提到要使用:
$element->setAttrib('placeholder', 'Search');
扩展 Zend_Form 时也可以这样使用
$element = $this->createElement('text', 'q', array(
'placeholder' => 'Search',
'label' => 'Search'
));
或者在视图内部使用 Zend_View_Helper_FormText
echo $this->formText('q',null, array('placeholder' => 'Search'));
【讨论】:
这是 ZF2 的更新。
您必须在 Zend\Form\Form 中使用它:
$this->add(
[
'name' => 'q',
'type' => 'Text',
'options' => [
'label' => 'Search',
],
'attributes' => [
'placeholder' => 'Search',
],
]
);
setAttrib 不存在,但setAttribute 存在:
$element->setAttribute('placeholder', 'Search');
但是在FormTextview-helper,你不能再添加选项了,所以你必须这样做:
$element = $form->get('q');
$saved_placeholder = $element->getAttribute('placeholder'); // works even if not defined
$element->setAttribute('placeholder', 'Search');
echo $this->formText($element);
$element->setAttribute('placeholder', $saved_placeholder);
我知道,这是一个丑陋的黑客!
【讨论】:
我使用 jQuery 的解决方案
var elements = ['email', 'password', 'password_confirm'];
$j(elements).each(function(i, elem){
$j('#' + elem).attr('placeholder', $j('#' + elem + '-label label').text());
$j('#' + elem + '-label').hide();
if ($j('#' + elem).hasClass('required-entry')) $j('#' + elem).attr('placeholder', $j('#' + elem).attr('placeholder') + ' *');
});
【讨论】: