2013-05-16 20 views
5

mam i Zend Form który robi to:Zend Form Validator File Upload idzie nieważne

class Products_AddForm extends Zend_Form { 
    public function init() { 

    $ProductImage1 = $mainform->addElement('file', 'Productimage1',  array(
           'validators' => array(
            array('Count', false, '1'), 
            array('Size', false, '10MB'), 
            array('Extension', false, 'jpg,jpeg,tif,eps'), 
           ), 
           'required' => false, 
           'label' => 'Product Image1 (jpg/tif/eps)' 
      )); 

wówczas kontroler, który sprawdza dane postu:

public function addAction() 
{ 

    $form = $this->getAddForm(); 

    if($this->getRequest()->isPost()){ 

     $post = $this->getRequest()->getPost(); 

     // check post data 
     if($form->isValid($post)) 
     { 
     } 
     else { 
      print_r($form->getErrors()); 
      print_r($form->getErrorMessages()); 
      print_r($form->getMessages()); 
     } 

oraz niestandardowy widok kontrolera coś takiego :

echo '<form method="post" action="'.$this->baseUrl('products/add').'" enctype="multipart/form-data">'; 

      $image1 = $form->getElement('Productimage1'); 

      $helper1 = $image1->helper; 
      echo '<br/>'.$this->translate('Productimage').' (jpg/tif):<br/>'.$bild1->getView()->$helper1(
      $image1->getName(), 
      $image1->getValue(), 
      $image1->getAttribs(), 
      $image1->options 
      ); 

Kiedy po prostu wpisuję niektóre informacje w polach tekstowych i publikuję je, $ form-> isValid() kończy się fałszem. Po usunięciu części plików z formularza i widoku niestandardowego działa idealnie.

Formelement jest na "wymaganym" fałszu. Ponadto fałszywa część kontrolera -> getErrors(), getMessages() i getErrorMessages() nie zwraca żadnych błędów ?!

Czy ktoś wie, co się tutaj dzieje?

Odpowiedz

2

Spróbuj tak: To Twoja forma:

$image = $this->createElement('file','image'); 
      $image->setLabel('Product Image1 (jpg/tif/eps) ') 
        ->setRequired(false) 
        ->setDestination(??) 
        ->addValidator('Count',false,1) 
        ->addValidator('Size',false,10MB) 
        ->addValidator('Extension',false,'jpg,tif,eps'); 
      $this->addElement($image); 

Ten kontroler:

$form = new Application_Form_YOURFORM(array('action' => '', 'method' => 'POST')); 
     if($this->_request->isPost() && $form->isValid($this->_request->getPost())) 
     { 
      if($form->image->isUploaded()) 
      { 
       $form->image->receive(); 
       $this->image = 'destination' . basename($form->image->getFileName()); 
      } 
      $this->_helper->redirector('..'); 
     } 
     else 
     { 
      $this->view->form = $form; 
     } 

Państwa zdanie:

<?php echo $this->form ?> 
+0

Część kontroler nie ma żadnego wpływu , ponieważ $ form-> isValid() zwraca wartość false. Widok jest widokiem niestandardowym i nie można tego zrobić za pomocą 'echo $ this-> form'. – frgtv10

Powiązane problemy