我认为在您的网络应用中拥有表单是一个常见的要求 编辑删除 他们下面的按钮。但ZF将一个按钮放在另一个按钮下,这是违反直觉的。 我想ViewScript装饰器可以帮助我完全覆盖按钮html。
但如何跨越其他形式,避免重复? 可能是我过于复杂,我只是应该以某种方式粘贴html代码而不是按钮元素对象?
答案 0 :(得分:1)
在Zend Developer Zone上阅读本教程:
答案 1 :(得分:1)
可以在Form的构造函数中修改Button修饰符。 按钮应该保留没有HtmlTag装饰器以禁用由于dt / dd标签而在单独的行上,HtmlTag装饰器可以像这样删除:
$buttonobject->setDecorators(array(
'ViewHelper',
//array('HtmlTag', array('tag' => 'dd')),
//array('Label', array('tag' => 'dt')),
));
评论仅供演示之用。 此外,按钮可以分组为字段集,用于样式目的:
$这 - > addDisplayGroup(阵列( '删除', '提交'), '按钮');
可选的site.css代码:
#fieldset-buttons { border: none; }
答案 2 :(得分:1)
这是我在我自己的Form类中使用的代码,我的所有表单都继承自该代码。主要技巧是仅在按钮本身上使用ViewHelper Decorator,并将按钮粘贴在使用DtDdWrapper的显示组中,并将按钮包裹在<div class='buttons'>
中以获得额外的样式选项
protected $_buttons = array();
/**
* Sets a list of buttons - Buttons will be standard submits, or in the getJson() version
* they are removed from display - but stuck in the json in the .buttons property
*
* $buttons = array('save'=>'Save This Thing', 'cancel'=>'Cancel') as an example
*
* @param array $buttons
* @return void
* @author Corey Frang
*/
public function setButtons($buttons)
{
$this->_buttons = $buttons;
foreach ($buttons as $name => $label)
{
$this->addElement('submit', $name, array(
'label'=>$label,
'class'=>$name,
'decorators'=>array('ViewHelper'),
));
}
$this->addDisplayGroup(array_keys($this->_buttons),'buttons', array(
'decorators'=>array(
'FormElements',
array('HtmlTag', array('tag'=>'div', 'class'=>'buttons')),
'DtDdWrapper'
)
));
}
// Example from form::init()
$this->setButtons(array('save'=>'Save Entry', 'delete'=>'Delete Entry'));