Zend Framework html表单输入元素带有空格

时间:2009-05-14 14:50:13

标签: php html zend-framework

当我创建这样的html表单时:

$form = new Zend_Form();
$form->setMethod('post');
$form2->addElement('textarea', 'Name with Space');

HTML变为:

...
<textarea name="NamewithSpace" id="NamewithSpace" rows="24" cols="80"></textarea>
...

提及输入名称变为camelcase!

当我打电话给$ form-&gt; getValues();在填写textarea的帖子之后,结果是:

array('Name with Space' => NULL); // Whitespace name! But value empty!

当我打电话给$ this-&gt; getRequest();在填写textarea的帖子之后,结果是:

array('NamewithSpace' => 'filled in value'); // Camelcase name! Value filled, but name changed!

如何使用设置名称“带空格的名称”访问填充的值?

我正在使用ZF 1.7.6。

2 个答案:

答案 0 :(得分:1)

不幸的是我不认为你可以!对于您必须具有ZF中不可接受的元素名称的应用程序,您必须修改ZF源。

在ZF 1.8.1中,您需要更改以允许空格(以及任何其他字符)的正则表达式位于Zend / Form / Element.php的第424行

一种可能的(更好的)解决方案是创建自定义元素并覆盖filterName方法,但是如果您希望更改多个元素类型,则这不太实用。

肯定有更好的解决方案吗?!

答案 1 :(得分:1)

$form->getValues()将始终显示您在表单对象上设置的原始键和值,因为在发布表单后不会更新这些键和值。但是,您可以通过以下方式利用它:

$textarea = $form->getElement('Name with Space');
$key      = str_replace(' ', '', trim($textarea->getName()));

在请求对象上使用该键,可以让您访问您所追求的值。这有点像黑客,但看起来可能有用。