/** * Validate order * * @param RequestInterface $request * @param array $errors */ protected function validateOrder(RequestInterface $request, array &$errors) { foreach ($request->getOrder() as $field => $value) { if (!$this->schema->hasField($field)) { $errors[] = sprintf('Order cannot be applied to non-existent field "%s"', $field); continue; } if (!$this->schema->getField($field)->isOrderable()) { $errors[] = sprintf('Field "%s" is not orderable', $field); } if ($value !== RequestInterface::ORDER_ASC && $value !== RequestInterface::ORDER_DESC) { $errors[] = sprintf('Invalid order direction "%s" specified for the field "%s"', $value, $field); } } }
/** * Process order * * @param Criteria $criteria * @param RequestInterface $request */ protected function processOrder(Criteria $criteria, RequestInterface $request) { $criteria->orderBy($request->getOrder()); }