示例#1
0
 /**
  * @depends testQueryParamsAreMutable
  */
 public function testQueryParamsAreNullable(ResourceEvent $event)
 {
     $event->setQueryParams(null);
     $this->assertNull($event->getQueryParams());
 }
 /**
  * Dispatch an incoming event to the appropriate method
  *
  * Marshals arguments from the event parameters.
  *
  * @param  ResourceEvent $event
  * @return mixed
  */
 public function dispatch(ResourceEvent $event)
 {
     $this->event = $event;
     switch ($event->getName()) {
         case 'create':
             $data = $event->getParam('data', []);
             return $this->create($data);
         case 'delete':
             $id = $event->getParam('id', null);
             return $this->delete($id);
         case 'deleteList':
             $data = $event->getParam('data', []);
             return $this->deleteList($data);
         case 'fetch':
             $id = $event->getParam('id', null);
             return $this->fetch($id);
         case 'fetchAll':
             $queryParams = $event->getQueryParams() ?: [];
             return $this->fetchAll($queryParams);
         case 'patch':
             $id = $event->getParam('id', null);
             $data = $event->getParam('data', []);
             return $this->patch($id, $data);
         case 'patchList':
             $data = $event->getParam('data', []);
             return $this->patchList($data);
         case 'replaceList':
             $data = $event->getParam('data', []);
             return $this->replaceList($data);
         case 'update':
             $id = $event->getParam('id', null);
             $data = $event->getParam('data', []);
             return $this->update($id, $data);
         default:
             throw new Exception\RuntimeException(sprintf('%s has not been setup to handle the event "%s"', __METHOD__, $event->getName()));
     }
 }
 /**
  * @param ResourceEvent $event
  * @param bool $translatePaging
  * @param bool $translateDecoded
  * @return array
  */
 protected function getQueryParams(ResourceEvent $event, $translatePaging = false, $translateDecoded = false)
 {
     $params = (array) ($event->getQueryParams() ?: array());
     if ($translatePaging === true) {
         $params = $this->translatePagingParams($params);
     }
     if ($translateDecoded === true) {
         foreach ($params as $key => $value) {
             // Try to detect JSON...
             if (is_string($value) && in_array($value[0], array('[', '{'))) {
                 try {
                     $params[$key] = $this->decodeJson($value);
                 } catch (Exception\RuntimeException $e) {
                     // Do nothing (assume it wasn't JSON)
                 }
             }
         }
     }
     return $params;
 }