Tak jak w temacie od początku weekendu próbuje stworzyć dynamiczny formularz który będzie dodawał wyznaczone elementy. Znalazłem i wykonałem ten tutorial
http://www.jeremykendall.net/2009/01/19 … zend-form/ , a chcąc aby zamiast jednego pola dodawał mi dwa, przerobiłem funkcje znajdujące się w formularzu. Teraz wyglądają u mnie tak
public function preValidation
(array $data) { function findFields($field) {
if (strpos($field, 'newName') !== false) { return $field;
}
if (strpos($field, 'newInfo') !== false) { return $field;
}
}
foreach ($newFields as $fieldName) {
if (strpos($fieldName, 'newName') !== false) { $order = ltrim($fieldName, 'newName') + 2; $this->addNewField($fieldName, $data[$fieldName], $order);
}
if (strpos($fieldName, 'newInfo') !== false) { $order = ltrim($fieldName, 'newInfo') + 2; $this->addNewInfo($fieldName, $data[$fieldName], $order);
}
}
}
public function addNewField($name, $value, $order) {
$next_proposal = new Zend_Form_Element_Text($name);
$next_proposal->setRequired(true)
->setOrder($order)
->setValue($value)
->setLabel('Nazwa propozycji: ')
->setAttrib('size', '40')
new Zend_Filter_StringToLower('UTF-8'),
new Zend_Filter_StringTrim(),
new Zend_Filter_StripNewlines(),
new Zend_Filter_StripTags()
))
new Zend_Validate_NotEmpty(),
new Zend_Validate_StringLength(3, 100),
new Zend_Validate_Regex('/^[a-zA-Z0-9 -]+$/'),
new Zend_Validate_Db_NoRecordExists('proposals', 'title')
));
$this->addElement($next_proposal);
}
public function addNewInfo($name, $value, $order) {
$next_info = new Zend_Form_Element_Textarea($name);
$next_info->setLabel('Opisz propozycje: ')
->setValue($value)
->setOrder($order)
->setRequired(TRUE)
'cols' => 10,
'rows' => 5
))
new Zend_Filter_StringTrim(),
new Zend_Filter_StripTags()
))
new Zend_Validate_NotEmpty(),
new Zend_Validate_StringLength(250, 6000)
));
$this->addElement($next_info);
}
Problem w tym że gdy funkcje wykonują się przy próbie walidacji otrzymuje wyłącznie elementy textarea, natomiast elementy text nie są wyświetlane.
Będę wdzięczny za wszystkie rady.