ZF:GET参数重复

Ant*_*ony 2 forms zend-framework get zend-form

作为ZF的补充:如何检查GET请求?.

我有两个输入字段和一个复选框.形式是标准的.

public function init()
{
    $this->setMethod('GET');

    $new = new Zend_Form_Element_Checkbox('new');
    $new->setLabel('New')
        ->setOrder(3);

    $app = new Zend_Form_Element_Select('app');
    $app->setLabel('System')
          ->setOrder(2)
          ->setRequired()
          ->addMultiOptions(array('0' => ' ----------- ') + $applications);

    $cat = new Zend_Form_Element_Select('cat');
    $cat->setLabel('Theme')
          ->setOrder(1)
          ->setRequired()
          ->addMultiOptions(array('0' => ' ----------- ') + $categories);

    $submit = new Zend_Form_Element_Submit('submit');
    $submit->setLabel('Search')
          ->setOrder(4);

    $this->addElements(array(
        $cat, $app, $new, $submit
    ));
}
Run Code Online (Sandbox Code Playgroud)

1)我在新的地址为0时进行提交:http://site.com/?cat = 0&app = 0&new = 0

2)我在新的地址为1时提交:http://site.com/?cat = 0&app = 0& new = 0&new = 1

为什么新字段会重复?如果new = 1,如果new = 0,则我会很好

Mar*_*cin 5

我认为这是因为Zend_From在您的复选框旁边创建了一个隐藏的输入字段.这样做是因为当未选中复选框时,根据定义,没有与复选框关联的值被发送到服务器.所以Zend_Form会创建隐藏字段,以便在取消选中复选框时发送内容.但是,缺点是当选中复选框时,会发送两个值,即隐藏的值和复选框的实际值.

  • @Anthony.Zend复选框的html复选框在[Zend_View_Helper_FormCheckbox]中生成(https://github.com/mridgway/Zend-Framework-1.x-Mirror/blob/master/library/Zend/View/Helper/FormCheckbox.php#L60) .您可以在第92行看到隐藏字段也会生成.因此,您可以创建自己的自定义帮助程序,并选择删除此隐藏字段或仅删除此行.拥有新的帮助程序,您还需要告诉Zend_Form_Element_Checkbox的实例使用新的帮助程序而不是原始的帮助程序. (2认同)