Как загрузить несколько изображений в базу данных в Zend Framework - PullRequest
0 голосов
/ 01 мая 2019

У меня есть код, который хранит несколько изображений в каталоге, но не вставляет их в базу данных. Пожалуйста, помогите мне. Я использую шлюз таблицы. если кто-нибудь даст мне правильный и простой способ вставить несколько изображений в базу данных.

это мой контроллер

StudentController.php

 public function addAction() {
    $form = new StudentForm();
    $request = $this->getRequest();
    if ($request->isPost()) {
        $student = new Student();
        $images=$this->convert_multi_array($request->getFiles()->toArray());
        $post = array_merge_recursive(
        $request->getPost()->toArray(),
        $request->getFiles()->toArray()
    );
          $form->setData($post);
        if ($form->isValid()) {

           $student->exchangeArray($form->getData());
            $this->getStudentTable()->saveStudent($student);
           // return $this->redirect()->toRoute('student');
            print_r($images);
           // print_r($post);
            echo "working";
        }else{
            echo "not working";
        }
    }
    return array('form' => $form,);
}

А это модель Student.php

  public function getInputFilter() { 

      if (!$this->inputFilter) { 
         $inputFilter = new InputFilter(); 
         $factory     = new InputFactory();
         $inputFilter->add(
                $factory->createInput(array(
                    'name'     => 'image',
                    'required' => true,
                ))
            );
         $inputFilter->add(array( 
            'name' => 'name', 
            'required' => true, 
            'filters' => array( 
               array('name' => 'StripTags'), 
               array('name' => 'StringTrim'), 
            ), 
            'validators' => array( 
               array( 
                  'name' => 'StringLength', 
                  'options' => array( 
                     'encoding' => 'UTF-8', 
                     'min' => 1, 
                     'max' => 100, 
                  ), 
               ), 
            ), 
         )); 
         $inputFilter->add(array( 
            'name' => 'department', 
            'required' => true, 
            'filters' => array( 
               array('name' => 'StripTags'), 
               array('name' => 'StringTrim'), 
            ),  
            'validators' => array( 
               array( 
                  'name' => 'StringLength', 
                  'options' => array( 
                     'encoding' => 'UTF-8', 
                     'min' => 1, 
                     'max' => 100, 
                  ), 
               ), 
            ), 
         )); 
         $inputFilter->add(array( 
            'name' => 'marks', 
            'required' => true, 
            'filters' => array( 
               array('name' => 'StripTags'), 
               array('name' => 'StringTrim'), 
            ),  
            'validators' => array( 
               array( 
                  'name' => 'StringLength', 
                  'options' => array( 
                     'encoding' => 'UTF-8', 
                     'min' => 1, 
                     'max' => 100, 
                  ), 
               ), 
            ), 
         ));  
            $this->inputFilter = $inputFilter; 
      } 
      return $this->inputFilter; 

   }

А

public function exchangeArray($data){
        $this->id = (isset($data['id']))?$data['id']:null;
        //// image////
        if(!empty($data['image'])) { 
         if(is_array($data['image'])) { 
            $this->image = str_replace("./public/tmpuploads/", "", 
               $data['image']['tmp_name']); 
         } else { 
            $this->image = $data['image']; 
         } 
      } else { 
         $data['image'] = null; 
      } 
        $this->name = (isset($data['name']))?$data['name']:null;
        $this->department = (isset($data['department']))?$data['department']:null;
        $this->marks = (isset($data['marks']))?$data['marks']:null;
    }

 public function getArrayCopy() {
        return get_object_vars($this);
    }


Форма моего студента- StudentForm.php

namespace Student\Form;

use Zend\InputFilter;
use Zend\Form\Form;
use Zend\Form\Element;

class StudentForm extends Form {


         public function __construct($name = null, $options = array())
    {
        parent::__construct($name, $options);
        $this->addElements();
        $this->setInputFilter($this->createInputFilter());
    }
    public function addElements()
    {
        $image = new Element\File('image');

         $image->setLabel('Avatar Image Upload')
             ->setAttribute('id', 'image-file')
             ->setAttribute('multiple', true);  
        $this->add($image);

        $name = new Element\Text('name');
        $name->setLabel('Name');
        $this->add($name);
        $department = new Element\Text('department');
        $department->setLabel('Department');
        $this->add($department);
        $marks = new Element\Text('marks');
        $marks->setLabel('Marks');
        $this->add($marks);

    }
    public function createInputFilter()
    {
        $inputFilter = new InputFilter\InputFilter();
        // File Input
        $image = new InputFilter\FileInput('image');
        $image->setRequired(true);
        $image->getFilterChain()->attachByName(
            'filerenameupload',
            array(
                'target'          => './public/tmpuploads/',
                'overwrite'       => true,
                'use_upload_name' => true,
            )
        );
        $inputFilter->add($image);
        // Text Input
        $name = new InputFilter\Input('name');
        $name->setRequired(true);
        $inputFilter->add($name);
        // Text Input
        $department = new InputFilter\Input('department');
        $department->setRequired(true);
        $inputFilter->add($department);
        // Text Input
        $marks = new InputFilter\Input('marks');
        $marks->setRequired(true);
        $inputFilter->add($marks);


        return $inputFilter;
    }
}

`````

1 Ответ

0 голосов
/ 01 мая 2019

Поскольку я понимаю ваш код, вы должны сначала загрузить изображение, а затем вы должны сделать строку, разделенную запятыми, как это

ее единственный пример кода

$imageString = '';
for($i=0; $i<count($_FILES['file']['name']); $i++){
     $extension = explode('.', basename( $_FILES['file']['name'][$i]));
     $imageName = md5(uniqid()) . "." . $extension[count($extension)-1];
     $path = $path . $imageName; 

      if(move_uploaded_file($_FILES['file']['tmp_name'][$i], $path )) {
         $imageString .= $imageName.", ";
      } else{
        echo "Error in Upload";
       }
   }
$imageName = rtrim($imageName,", ");

// теперь вы можете использоватьimageName в запросе вставки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...