【问题标题】:ZF2: How to set form elements to be ignored?ZF2:如何设置要忽略的表单元素?
【发布时间】:2013-03-30 03:26:00
【问题描述】:

我无法在 Zend Framework 2 中忽略表单元素。

所有这些似乎都不起作用:

$this->add(array(
  'name' => 'submit',
  'ignore' => TRUE,
  'attributes' => array(
    'type'  => 'submit',
    'value' => 'Go!',
    'id' => 'submitbutton',
    'ignore' => TRUE
),
'options' => array(
  'ignore' => TRUE
)
));

这是它过去在 Zend Framework1 中的工作方式:

//Zend Framework 1
$this->addElement(
  'submit',
  'login',
  array(
   'ignore' => true,
   'label' => 'Login'
    )
);

编辑:
为什么我需要“忽略”选项?

假设您的表单有一个提交按钮。使用普通 PHP,$_POST 之类的东西也会列出您的提交按钮。 Zend 1 有有用的选项setIgnore($flag)getIgnore() 来排除这些元素。 $form->getValues()(验证后)将排除所有标记“忽略”设置为TRUE 的元素。见ZF1 manual

【问题讨论】:

  • 忽略是什么意思。忽略提交元素的目的是什么?你的意思是从验证中排除?你的意思是允许空值吗?你的问题不是很直接。
  • @Sam:感谢您的提示。我以为“Zend-Frameworkers”会明白我的意思。 ;) 我编辑了我的原作。发帖澄清。
  • 据我所知,ZF2没有这样的功能,我个人认为这是一件好事,因为它也很没用。如果您不需要任何 POST 数据,那么就不要使用它。根本没有必要完全没有它。由于您使用$form->setData($request->getPost()) 设置表单数据,您可以简单地将getPost() 放入变量中,然后将unset($postData['submit']) 左右...
  • 我有一个表单元素通过 JavaScript 更改其他隐藏的表单元素的情况。表单元素纯粹是美学的,所以我不需要将它发布到服务器。在这种情况下,它对我很有用。

标签: zend-framework2 zend-form


【解决方案1】:

查看inputfilters

我的使用是这样的:

  1. 创建您的表单
  2. 创建过滤器
  3. 在控制器中使用它

    $form = new BasicForm();
    $form->setInputFilter(new BasicFilter());
    

关于过滤器,您可以这样做: $factory = new InputFactory();

    $this->add($factory->createInput(array(
        'name' => 'birthday',
        'required' => false,
        'allowEmpty' => true,));

【讨论】:

  • 这不是解决方案(至少在使用表单的 bind() 方法时),另外,自 ZF2 2.4.8 起不推荐使用 allowEmpty
【解决方案2】:
$form->setValidationGroup('email', 'password');
$form->setData($data);
if ($form->isValid()) {
    // Contains only the "email" and "password" values
    $data = $form->getData();
}

http://framework.zend.com/manual/2.3/en/modules/zend.form.quick-start.html#validation-groups

【讨论】:

    【解决方案3】:

    我想你正在寻找

    'options' => array(
        'exclude' => true,
    ),
    

    【讨论】:

      猜你喜欢
      • 2013-04-15
      • 1970-01-01
      • 2013-07-24
      • 1970-01-01
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      • 2015-02-05
      • 1970-01-01
      相关资源
      最近更新 更多