Intereting Posts
phpunit не находит никаких тестов с тегом Director xml, но делает с (некоторыми) файлами теги Multi Select Dropdownlist Предварительный выбор Как отправить запрос XML-мыла с помощью php curl неправильный порядок php mysql по метке времени Как получить страну пользователя и переслать URL? Laravel PDOException SQLSTATE Неизвестная база данных 'forge' Загрузка пользовательских классов в CodeIgniter? Рекурсивный запрос MySQL? Можно ли использовать установку Symfony2 (несколько сайтов на одном сервере) PHP: если нет имени Получение необработанных SQL-запросов в CodeIgniter 1.7 Как получить SSL + mod_rewrite + Zend Framework MVC, работающий вместе? php 301 перенаправляет фактическое выполнение перенаправления 302 mySQL-запрос – показать самый популярный элемент Метод (например, через скрипт bash), чтобы превратить индексы php-массива в настоящее время с использованием констант в индексы массивов с использованием одинарных кавычек?

вход массива, например name = "person " в форме zend

В обычном html мы могли бы иметь поле массива типа person[]

 <input name="person[]" type="text" /> <input name="person[]" type="text" /> <input name="person[]" type="text" /> 

Насколько мне известно, у Zend_Form этого нет. Я прочитал еще один ответ, который предположил, что это можно сделать с помощью декоратора, который добавит [] в нужное место. Это код для этого конкретного вопроса

 $html = ''; // some code html $i = 0; foreach ($element->getMultiOptions() as $value => $label){ $html .= '<input type="checkbox" ' . 'name="'.$element->getName().'[]" ' . 'id="'$element->getName()'-'.$i.'" ' . 'value="'.$value.'" />'; $i++; } return $html; 

Это похоже на хорошее начало, но мне интересно, достаточно ли использовать декоратор. Значения, возвращаемые обратно, должны быть правильно прочитаны и доставлены на сервер, а затем проверены на стороне сервера. Так что же декоратор – неправильная идея? Будет ли здесь особый элемент? Я не видел хорошего примера, показывающего, как это можно сделать.

Я думаю, что ZF не позволяет создавать отдельные текстовые поля ввода с именем person[] , хотя вы можете сделать это для всей формы или подформы. Однако это позволяет что-то подобное. В частности, вы можете создавать поля с именем person[0] , person[1] и т. Д.

Для этого вы можете сделать следующее:

 $in1 = $this->createElement('text', '0'); $in2 = $this->createElement('text', '1'); $in1->setBelongsTo('person'); $in2->setBelongsTo('person'); 

Таким образом, вы обычно можете присоединить ваши валидаторы, фильтры и т. Д. До $ in1 или $ in2, и они будут работать, как ожидалось. В вашем действии после проверки формы вы можете получить массив входных текстовых полей лица как:

 $values = $yourForm->getValues(); var_dump($values['person']); 

Интересно, что следующее НЕ будет работать:

 $in1 = $this->createElement('text', 'person[0]'); $in2 = $this->createElement('text', 'person[1]'); 

Надеюсь, что это поможет вам.