Esempio n. 1
0
 /**
  * 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);
         }
     }
 }