Jarves\Admin\ObjectCrud::addMultiple PHP Method

addMultiple() public method

We need as POST following data: { _items: [ {field1: 'foo', field2: 'bar'}, {field1: 'foo2', field2: 'bar2'}, .... ], same value across all items, all without underscore fixedField1: 'asd', field3: 'fgh', _position: 'first', //take a look at $this->objects->add() at parameter $pPosition _pk: { id: 123132 }, can differ between the actual object and the target (if we have a different object as root, then only position first and 'last` are available.) _targetObjectKey: 'jarves/node' }
public addMultiple ( Request $request ) : array | mixed
$request Symfony\Component\HttpFoundation\Request
return array | mixed
    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;
    }
ObjectCrud