NerdsAndCompany\Schematic\Services\CategoryGroups::import PHP Метод

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

Attempt to import category groups.
public import ( array $categoryGroupDefinitions, boolean $force = false ) : Result
$categoryGroupDefinitions array
$force boolean If set to true category groups not included in the import will be deleted
Результат Result
    public function import(array $categoryGroupDefinitions, $force = false)
    {
        Craft::log(Craft::t('Importing Category Groups'));
        $this->resetCraftCategoriesServiceCache();
        $categoryGroups = Craft::app()->categories->getAllGroups('handle');
        foreach ($categoryGroupDefinitions as $categoryGroupHandle => $categoryGroupDefinition) {
            $categoryGroup = array_key_exists($categoryGroupHandle, $categoryGroups) ? $categoryGroups[$categoryGroupHandle] : new CategoryGroupModel();
            unset($categoryGroups[$categoryGroupHandle]);
            $this->populateCategoryGroup($categoryGroup, $categoryGroupDefinition, $categoryGroupHandle);
            if (!Craft::app()->categories->saveGroup($categoryGroup)) {
                // Save categorygroup via craft
                $this->addErrors($categoryGroup->getAllErrors());
                continue;
            }
        }
        if ($force) {
            foreach ($categoryGroups as $categoryGroup) {
                Craft::app()->categories->deleteGroupById($categoryGroup->id);
            }
        }
        return $this->getResultModel();
    }

Usage Example

Пример #1
0
 /**
  * @covers ::import
  * @dataProvider provideValidCategoryGroupDefinitions
  *
  * @param array $groupDefinitions
  */
 public function testImportWithForceOption(array $groupDefinitions)
 {
     $this->setMockCategoriesService();
     $this->setMockDbConnection();
     $this->setMockSchematicFields();
     $schematicUserGroupsService = new CategoryGroups();
     $import = $schematicUserGroupsService->import($groupDefinitions, true);
     $this->assertInstanceOf(Result::class, $import);
     $this->assertFalse($import->hasErrors());
 }