Jarves\Router\RestApiLoader::setupObjectRouteRequirements PHP Метод

setupObjectRouteRequirements() публичный Метод

public setupObjectRouteRequirements ( $route, Object $object, $withPrefix = false )
$object Jarves\Configuration\Object
    public function setupObjectRouteRequirements($route, Object $object, $withPrefix = false)
    {
        $path = $route instanceof Route ? $route->getPath() : $route;
        if (false !== strpos($path, '{pk}')) {
            $pks = [];
            foreach ($object->getFields() as $field) {
                if ($field->isPrimaryKey()) {
                    $oriPk = $pk = ($withPrefix ? lcfirst($object->getId()) . '_' : '') . $field->getId();
                    $i = 0;
                    while (false !== strpos($path, '{' . $pk . '}')) {
                        $pk = $oriPk . ++$i;
                    }
                    $pks[] = '{' . $pk . '}';
                    if ($route instanceof Route) {
                        $pkColumns = $field->getFieldType()->getColumns();
                        if ($pkColumns) {
                            //we support for now only one column per pk
                            $column = $pkColumns[0];
                            $route->setRequirement($pk, $column->getRequiredRegex());
                        }
                    }
                }
            }
            $path = str_replace('{pk}', implode('/', $pks), $path);
            if ($route instanceof Route) {
                $requirements = $route->getRequirements();
                unset($requirements['pk']);
                $route->setRequirements($requirements);
                $route->setPath($path);
            }
        }
        return $path;
    }