Example #1
0
 /**
  * Returns the parsed payload.
  *
  * @throws HttpException
  * @return string|boolean
  */
 protected function parseRequest(Request $request, $bypassValidate = false)
 {
     $payload = $request->getJsonPayload();
     if ($bypassValidate !== true) {
         $this->validateRequest($payload, $request->getMethod());
     }
     $entityManger = $this->getDoctrine()->getManager();
     $entityClassName = $this->manager->getClassName();
     $apcKey = "entity_metadata_" . $entityClassName;
     if (apc_exists($apcKey) === false) {
         $entityMetadata = $entityManger->getClassMetadata($entityClassName);
         apc_add($apcKey, $entityMetadata, 0);
     } else {
         $entityMetadata = apc_fetch($apcKey);
     }
     foreach ($payload as $parameter => $value) {
         $apcKey = "entity_assoc_class_" . $entityClassName . "_" . $parameter;
         if (apc_exists($apcKey) === false) {
             try {
                 $fieldTargetClass = $entityMetadata->getAssociationTargetClass($parameter);
                 apc_add($apcKey, $fieldTargetClass, 0);
             } catch (\InvalidArgumentException $e) {
                 apc_add($apcKey, null, 0);
                 continue;
             }
         } else {
             $fieldTargetClass = apc_fetch($apcKey);
         }
         if ($fieldTargetClass === false || $fieldTargetClass === null) {
             continue;
         }
         $targetEntity = $entityManger->getRepository($fieldTargetClass)->find($value);
         $payload[$parameter] = $targetEntity;
     }
     return $payload;
 }