1

我在设置 zend 表单元素提交按钮 (Zendframework1) 的基本值时遇到问题。我基本上想在其中设置一个唯一的 ID 号,然后在提交按钮后检索该号码。

下面是我的代码。您不会注意到我尝试使用 setValue() 方法,但这不起作用。

$new = new Zend_Form_Element_Submit('new');
  $new
   ->setDecorators($this->_buttonDecorators)
   ->setValue($tieredPrice->sample_id) 
   ->setLabel('New');

  $this->addElement($new);

我也将不胜感激任何关于我用来接收价值观的建议。即我将调用什么方法来检索值?

4

2 回答 2

1

标签用作提交按钮的值,这就是提交的内容。没有办法将另一个值作为按钮的一部分提交——您要么需要更改提交名称或值(= 标签)。

相反,您可能想要做的是在表单中添加一个隐藏字段并改为提供您的数值。

于 2013-08-20T14:10:17.973 回答
1

这有点棘手但并非不可能:

您需要实现自己的视图助手并将其与您的元素一起使用。

首先,您必须添加自定义视图助手路径:

如何添加视图助手目录(zend 框架)

实现你的助手:

class View_Helper_CustomSubmit extends Zend_View_Helper_FormSubmit
{
    public function customSubmit($name, $value = null, $attribs = null)
    {
        if( array_key_exists( 'value', $attribs ) ) {
            $value = $attribs['value'];
            unset( $attribs['value'] );
        }

        $info = $this->_getInfo($name, $value, $attribs);
        extract($info); // name, value, attribs, options, listsep, disable, id
        // check if disabled
        $disabled = '';
        if ($disable) {
            $disabled = ' disabled="disabled"';
        }

        if ($id) {
            $id = ' id="' . $this->view->escape($id) . '"';
        }

        // XHTML or HTML end tag?
        $endTag = ' />';
        if (($this->view instanceof Zend_View_Abstract) && !$this->view->doctype()->isXhtml()) {
            $endTag= '>';
        }

        // Render the button.
        $xhtml = '<input type="submit"'
                . ' name="' . $this->view->escape($name) . '"'
                        . $id
                        . ' value="' . $this->view->escape( $value ) . '"'
                                . $disabled
                                . $this->_htmlAttribs($attribs)
                                . $endTag;

        return $xhtml;
    }

}

因此,您将助手分配给元素:

$submit = $form->createElement( 'submit', 'submitElementName' );
$submit->setAttrib( 'value', 'my value' );  
$submit->helper = 'customSubmit';
$form->addELement( $submit );

这样,您可以检索提交表单的值:

$form->getValue( 'submitElementName' );
于 2013-08-20T15:11:25.767 回答