ZF\Apigility\Doctrine\Server\Resource\DoctrineResource::create PHP Method

create() public method

Create a resource
public create ( mixed $data ) : ZF\ApiProblem\ApiProblem | mixed
$data mixed
return ZF\ApiProblem\ApiProblem | mixed
    public function create($data)
    {
        $entityClass = $this->getEntityClass();
        $data = $this->getQueryCreateFilter()->filter($this->getEvent(), $entityClass, $data);
        if ($data instanceof ApiProblem) {
            return $data;
        }
        $entity = new $entityClass();
        $results = $this->triggerDoctrineEvent(DoctrineResourceEvent::EVENT_CREATE_PRE, $entity, $data);
        if ($results->last() instanceof ApiProblem) {
            return $results->last();
        } elseif (!$results->isEmpty() && $results->last() !== null) {
            // TODO Change to a more logical/secure way to see if data was acted and and we have the expected response
            $preEventData = $results->last();
        } else {
            $preEventData = $data;
        }
        $hydrator = $this->getHydrator();
        $hydrator->hydrate((array) $preEventData, $entity);
        $this->getObjectManager()->persist($entity);
        $results = $this->triggerDoctrineEvent(DoctrineResourceEvent::EVENT_CREATE_POST, $entity, $data);
        if ($results->last() instanceof ApiProblem) {
            return $results->last();
        }
        $this->getObjectManager()->flush();
        return $entity;
    }

Usage Example

Example #1
0
 /**
  * Override parent so we can call getValues() to automatically rename uploaded file
  */
 public function create($data)
 {
     $inputFilter = $this->getInputFilter();
     $values = $inputFilter->getValues();
     $data->filename = $values['filename'];
     return parent::create($data);
 }
All Usage Examples Of ZF\Apigility\Doctrine\Server\Resource\DoctrineResource::create