Zend Framework элемент ввода HTML-формы с пробелами - PullRequest
1 голос
/ 14 мая 2009

Когда я создаю 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>
...

Упомяните, что вводимое имя становится верблюжьим!

Когда я вызываю $ form-> getValues ​​(); после сообщения с заполненной текстовой областью результат будет:

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

Когда я вызываю $ this-> getRequest (); после сообщения с заполненной текстовой областью результат будет:

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

Как получить доступ к заполненным значениям с заданным именем «Имя с пробелом»?

Я использую ZF 1.7.6.

Ответы [ 2 ]

1 голос
/ 14 мая 2009

$form->getValues() всегда будет показывать вам исходные ключи и значения, которые вы установили в объекте формы, так как они не обновляются после публикации формы. Тем не менее, вы можете использовать это в своих интересах с чем-то вроде:

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

Использование этого ключа в объекте запроса должно дать вам доступ к значению, которое вы ищете. Это что-то вроде хака, но похоже, что это может сработать.

1 голос
/ 14 мая 2009

К сожалению, я не думаю, что вы можете! Для приложения, в котором вы просто должны иметь имя элемента, которое неприемлемо в ZF, вам придется изменить источник ZF.

В ZF 1.8.1 регулярное выражение, которое нужно изменить, чтобы разрешить пробел (и любые другие символы), находится в строке 424 файла Zend / Form / Element.php

Одним из возможных (лучших) решений было бы создание пользовательского элемента и переопределение метода filterName, однако это не очень практично, если вы хотите изменить несколько типов элементов.

Наверное, должно быть лучшее решение?!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...