示例#1
0
 /**
  * @param AbstractEntity $resource
  * @param DataObject|null $object
  * @return array
  */
 private function checkAndInitAttributes(AbstractEntity $resource, DataObject $object = null)
 {
     $attributeCodes = $this->config->getEntityAttributeCodes($resource->getEntityType(), $object);
     $attributes = [];
     /**
      * Check and init default attributes
      */
     $defaultAttributes = $resource->getDefaultAttributes();
     foreach ($defaultAttributes as $attributeCode) {
         $attributeIndex = array_search($attributeCode, $attributeCodes);
         if ($attributeIndex !== false) {
             $attribute = $resource->getAttribute($attributeCodes[$attributeIndex]);
             $attributes[] = $attribute;
             unset($attributeCodes[$attributeIndex]);
         } else {
             $attribute = $this->_getDefaultAttribute($resource, $attributeCode);
             $attributes[] = $attribute;
             $resource->addAttribute($attribute);
         }
     }
     foreach ($attributeCodes as $code) {
         $attribute = $resource->getAttribute($code);
         $attributes[] = $attribute;
     }
     return $attributes;
 }