/** * Sets component property values from partial parameters. * The property values should be defined as {{ param }}. * @param ComponentBase $component The component object. * @param array $parameters Specifies the partial parameters. * @return Returns updated properties. */ protected function setComponentPropertiesFromParams($component, $parameters = []) { $properties = $component->getProperties(); $routerParameters = $this->router->getParameters(); foreach ($properties as $propertyName => $propertyValue) { $matches = []; if (preg_match('/^\\{\\{([^\\}]+)\\}\\}$/', $propertyValue, $matches)) { $paramName = trim($matches[1]); if (substr($paramName, 0, 1) == ':') { $routeParamName = substr($paramName, 1); $newPropertyValue = array_key_exists($routeParamName, $routerParameters) ? $routerParameters[$routeParamName] : null; } else { $newPropertyValue = array_key_exists($paramName, $parameters) ? $parameters[$paramName] : null; } $component->setProperty($propertyName, $newPropertyValue); $component->setExternalPropertyName($propertyName, $paramName); } } }