2010-07-08 8 views
2

Я создал простую форму загрузки и получил небольшую проблему при отправке данных.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(); 

ответ

3

использования

$desc->setValue('The description is not optional!'); 

вместо

$desc->setAttrib('value','The description is not optional!'); 
+0

Да, это так имеет значение с предопределенным текстом для текстового поля, но теперь он всегда принимает значение, которое я устанавливаю initally. Я не думаю, что мне нужно взять значение моего текстового поля, которое я хочу написать в базе данных, из $ _POST или чего-то (по крайней мере, я не хочу этого делать) –

+0

Zend_Form можно использовать для создания формы или для проверки/получения значений формы. вы должны использовать setValue() только при создании формы. Почему вы не хотите использовать $ _POST? вы можете проверить его с помощью объекта формы, чтобы убедиться: $ form-> isValid ($ _ POST). (сначала нужно добавить некоторые элементы проверки в элементы формы) –