예제 #1
0
 public function onRoute(MvcEvent $event)
 {
     $route = $event->getRouteMatch();
     $request = $event->getRequest();
     $app = $event->getApplication();
     $serviceManager = $app->getServiceManager();
     $config = $serviceManager->get('Config');
     if ($request instanceof Request) {
         // Set translator locale.
         if (is_array($config) && isset($config['translator'])) {
             $translator = $serviceManager->get('translator');
             $translatorConfig = $config['translator'];
             $session = new Container('language');
             $language = $translatorConfig['locale']['default'];
             if (isset($session->language)) {
                 $language = $session->language;
             }
             $language = $request->getQuery('language', $language);
             if (isset($translatorConfig['available']) && array_key_exists($language, $translatorConfig['available'])) {
                 $translator->setLocale($language);
                 $session->language = $language;
                 $route->setParam('language', $language);
             }
         }
         // Set default route pagination and order params.
         $route->setParam('page', (int) $request->getQuery('page', $route->getParam('page', 1)));
         $route->setParam('length', (int) $request->getQuery('length', $route->getParam('length', 10)));
         $route->setParam('order_by', $request->getQuery('order_by', $route->getParam('order_by')));
         $route->setParam('order', $request->getQuery('order', $route->getParam('order', 'ASC')));
         // Clean up dynamic filters.
         $filters = (array) $request->getQuery('filters', array());
         ArrayUtils::filter($filters, 'is_string');
         $route->setParam('filters', $filters);
     }
 }
예제 #2
0
 public function onRoute(MvcEvent $event)
 {
     $route = $event->getRouteMatch();
     $request = $event->getRequest();
     if ($request instanceof Request) {
         // Set default route pagination and order params.
         $route->setParam('page', (int) $request->getQuery('page', $route->getParam('page', 1)));
         $route->setParam('length', (int) $request->getQuery('length', $route->getParam('length', 10)));
         $route->setParam('order_by', $request->getQuery('order_by', $route->getParam('order_by')));
         $route->setParam('order', $request->getQuery('order', $route->getParam('order', 'ASC')));
         // Clean up dynamic filters.
         $filters = (array) $request->getQuery('filters', array());
         ArrayUtils::filter($filters, 'is_string');
         $route->setParam('filters', $filters);
     }
 }
 /**
  * @param  User    $user
  * @param  array   $newData
  * @param  boolean $override (Optional) TRUE to override old data or FALSE to complete missing
  * @return User
  */
 protected function _updateUser(User $user, array $newData, $override = true)
 {
     $sm = $this->getServiceLocator();
     // FIXME should use aliases but not reference to API module
     /** @var $hydrator \Zend\Stdlib\Hydrator\HydratorInterface */
     $hydrator = $sm->get('HydratorManager')->get('Api\\V1\\Rest\\User\\UserHydrator');
     // filter the data array
     $newData = ArrayUtils::filter($newData, function ($value, $key) {
         return in_array($key, array('email', 'birthday', 'firstname', 'lastname', 'gender')) && !empty($value);
     }, ArrayUtils::ARRAY_FILTER_USE_BOTH);
     // retrieve and filter current values
     $oldData = $hydrator->extract($user);
     $oldData = ArrayUtils::filter($oldData, function ($value, $key) {
         return in_array($key, array('email', 'birthday', 'firstname', 'lastname', 'gender')) && !empty($value);
     }, ArrayUtils::ARRAY_FILTER_USE_BOTH);
     $data = $override ? ArrayUtils::merge($oldData, $newData) : ArrayUtils::merge($newData, $oldData);
     $user = $hydrator->hydrate($data, $user);
     return $user;
 }