Example #1
0
 /**
  * @param Request $request
  * @param         $id
  * @param         $embed
  *
  * @return ResourceInterface
  */
 public function initFilterEmbed(Request $request, $id, $embed)
 {
     $embedShortname = ucwords(Inflector::singularize($embed));
     /** @var $resourceEmbed ResourceInterface */
     $resourceEmbed = $this->resourceResolver->getResourceForShortName($embedShortname, $this->router->getContext()->getApiVersion());
     $filter = new EmbedFilter($this->managerRegistry, $this->propertyAccessor);
     $params = !$request->request->has('embedParams') ? ['embed' => $embed, 'id' => $id] : $request->request->get('embedParams');
     $filter->setParameters($params);
     $filter->setRouteName($request->get('_route'));
     $resourceEmbed->addFilter($filter);
     return $resourceEmbed;
 }
Example #2
0
 /**
  * @param $data
  * @param $dataToSerialize
  */
 protected function setEmbed($data, $dataToSerialize)
 {
     if (isset($data['tags']['embed']) && isset($data['tags']['collection'])) {
         $filter = new EmbedFilter($this->managerRegistry, $this->propertyAccessor);
         $item = $dataToSerialize->getIterator()->current();
         if (null === ($params = $this->apiResource->getRouteKeyParams($item))) {
             $params['id'] = $this->propertyAccessor->getValue($item, 'id');
         }
         $params['embed'] = $this->apiResource->getShortName();
         $filter->setParameters($params);
         $filter->setRouteName($data['routeName']);
         $this->apiResource->addFilter($filter);
     }
 }