当我创建这样的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。
答案 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()));
在请求对象上使用该键,可以让您访问您所追求的值。这有点像黑客,但看起来可能有用。