Я создал простую форму загрузки и получил небольшую проблему при отправке данных.Zend Form Текстовое значение остается null
Файл загружен правильно, но мое маленькое поле описания остается нулевым.
Вот моя форма:
class Upload_Form_Uploadvideo extends Zend_Form{
public function init()
{
$this->setName('video')
->setAction('interface/videoupload')
->setMethod('post');
#id
$id = new Zend_Form_Element_Hidden('id');
$id->addFilter('Int');
#Textfield "Videofile"
$video = new Zend_Form_Element_File('videofile', array(
'label' => 'Videofile')
);
$video->setDestination(APPLICATION_PATH.'/upload/video/toConvert/');
#Textfield "Videofile"
$desc = new Zend_Form_Element_Text('videodescription', array(
'label' => 'Description')
);
$desc->setAttrib('value','The description is not optional!');
$desc->setAttrib('size','25');
#Submit
$submit = new Zend_Form_Element_Submit('submit', array('label' => 'Upload Video'));
$submit->setAttrib('id', 'submitbutton');
#bringing everything together
$this->addElements(array($id,$video,$desc,$submit));
}
}
контроллер, давая его мнению:
public function videouploadAction()
{
#in production this code goes to the index()
if(!$this->getRequest()->isPost()){
return $this->_forward('index');
}
$form = $this->getForm();
$this->view->via_getpost = var_dump($this->_request->getPost());
$this->view->via_getvalues= var_dump($form->getValues());
}
Теперь я var_dump $ это -> _ request-> getPost() и $ форма-> GetValues ().
Выход заключается в следующем:
array[$this->_request->getPost()]
'id' => string '0' (length=1)
'MAX_FILE_SIZE' => string '134217728' (length=9)
'videodescription' => string 'This is a test-video' (length=20)
'submit' => string 'Upload Video' (length=12)
array [$form->getValues()]
'id' => int 0
'videofile' => string 'swipeall.avi' (length=12)
'videodescription' => null
Кроме того, я установил "значение" -attrib, без какого-либо эффекта. Я намеревался написать что-то в поле, когда пользователь загружает сайт.
Я новичок в Zend, поэтому, я думаю, я просто наблюдаю за чем-то глупым, хотя я не могу его найти.
Update:
я действительно должен был получить $ _POST-Data с помощью
$formdata = $this->getRequest()->getPost();
Да, это так имеет значение с предопределенным текстом для текстового поля, но теперь он всегда принимает значение, которое я устанавливаю initally. Я не думаю, что мне нужно взять значение моего текстового поля, которое я хочу написать в базе данных, из $ _POST или чего-то (по крайней мере, я не хочу этого делать) –
Zend_Form можно использовать для создания формы или для проверки/получения значений формы. вы должны использовать setValue() только при создании формы. Почему вы не хотите использовать $ _POST? вы можете проверить его с помощью объекта формы, чтобы убедиться: $ form-> isValid ($ _ POST). (сначала нужно добавить некоторые элементы проверки в элементы формы) –