Как поставить 2 кнопки подряд в один Zend_Form - PullRequest
3 голосов
/ 31 марта 2009

Я полагаю, что в ваших веб-приложениях часто встречаются формы с Редактировать Удалить кнопки под ними. Но ZF ставит одну кнопку под другую, что нелогично. Я думаю, что декоратор ViewScript может помочь мне полностью переопределить кнопку HTML.

Но как это сделать в других формах, чтобы избежать дублирования? Может быть, я слишком усложняю, и мне просто нужно как-то вставить html-код вместо объектов-кнопок?

Ответы [ 3 ]

1 голос
/ 01 апреля 2009

Кнопочные декораторы могут быть изменены в конструкторе формы. Кнопки следует оставить без декоратора HtmlTag , чтобы отключить нахождение на отдельных строках из-за тегов dt / dd, декоратор HtmlTag можно удалить так:

$buttonobject->setDecorators(array(
    'ViewHelper',
    //array('HtmlTag', array('tag' => 'dd')),
    //array('Label', array('tag' => 'dt')),         
));

Комментарии только для демонстрационных целей. Кроме того, кнопки могут быть сгруппированы в набор полей для стилизации:

$ this-> addDisplayGroup (массив ( 'удалить', 'Submit'), 'кнопки');

Необязательный код site.css:

#fieldset-buttons { border: none; }
1 голос
/ 06 августа 2009

Это код, который я использую в своем собственном классе 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'));
1 голос
/ 31 марта 2009

Прочтите это руководство в Zend Developer Zone:

Декораторы-с-Zend_Form .

...