I have some code that store multiple image into directory but not inserting into database .please help me out. i am using table gateway. if anyone give me proper and easy way to insert multiple image into database.
this is my controller
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,);
}
And this is Model 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;
}
And
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);
}
my Student Form- 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;
}
}
`````