Zend-Form中是否有内置方法来隐藏SUBMIT输入字段的值?

时间:2009-06-08 16:18:20

标签: php zend-framework

如果我构建表单:

        $search_words = new Zend_Form_Element_Text('text');
    $search_words->setRequired(true)->setDecorators(array(array('ViewHelper')));
    $form->addElement($search_words);

    $go =  new Zend_Form_Element_Submit('gogogo');
    $go->setDecorators(array(array('ViewHelper')))
       ->setIgnore(true);
    $form->addElement($go);

使用方法GET。 我将在URL gogogo = gogogo中看到。如果我自己编写标记,我根本就不会给提交任何[name]属性,这样就可以解决这个问题。尝试将提交的名称设置为''将不起作用(抛出异常或被忽略,取决于您的方式)。
任何(内置)想法?

2 个答案:

答案 0 :(得分:1)

另一种可能性是在提交表单之前禁用提交按钮:

$go->setDecorators(array(array('ViewHelper')))
   ->setIgnore(true)
   ->setAttrib('onclick', 'this.disabled = true');

这样,提交表单时将忽略提交按钮的值。

答案 1 :(得分:0)

有几种可能的选择:

  1. 使用自定义装饰器构建标记,因此未指定name属性
  2. 对Zend_Form的渲染方法返回的标记使用字符串替换函数来删除属性
  3. 我经常做的事情,如下
  4. 我通常添加一个自定义路线,以便以下任何一个有效:

     domain.tld/search/keyword
     domain.tld/search?q=keyword
    

    然后你可以使用javascript重定向到URL的清洁形式,注意urlencode关键字字段

    您的大多数用户都会以这种方式看到更清晰的网址。