public function addMultiple(Request $request)
{
$inserted = array();
$fixedFields = array_keys($this->getAddMultipleFixedFields());
$fixedData = array();
if ($fixedFields) {
$data = $this->collectData($request);
$fixedData = $this->mapData($data, $fixedFields);
}
$fields = array_keys($this->getAddMultipleFields());
$position = $this->requestStack->getCurrentRequest()->request->get('_position');
$items = $this->requestStack->getCurrentRequest()->request->get('_items');
if (!$items) {
$items = $this->requestStack->getCurrentRequest()->query->get('_items');
}
if ($position == 'first' || $position == 'next') {
$items = array_reverse($items);
}
$pk = $this->requestStack->getCurrentRequest()->request->get('_pk');
$targetObjectKey = $this->requestStack->getCurrentRequest()->request->get('_targetObjectKey');
foreach ($items as $item) {
$data = $fixedData;
$data += $this->mapData($this->collectData($request), $fields, $item);
$args = ['pk' => $pk, 'values' => &$data, 'position' => $position, 'targetObjectKey' => $targetObjectKey, 'controller' => $this, 'mode' => 'update'];
$eventPre = new GenericEvent($this->getObject(), $args);
$this->eventDispatcher->dispatch('core/object/modify-pre', $eventPre);
$this->eventDispatcher->dispatch('core/object/update-pre', $eventPre);
try {
$result = $this->add($data, $pk, $position, $targetObjectKey);
$inserted[] = $result;
$args['result'] = $result;
$event = new GenericEvent($this->getObject(), $args);
$this->eventDispatcher->dispatch('core/object/modify', $event);
$this->eventDispatcher->dispatch('core/object/add', $event);
} catch (\Exception $e) {
$inserted[] = array('error' => ['exception' => get_class($e), 'message' => $e->getMessage()]);
}
}
return $inserted;
}