2017-12-15 19 views
0

Json 파일에서 tt_address로 주소 세트를 가져 오는 뉴스 작업을 작성했습니다. 그건 잘된거야. 이제 나는 새로운 카테고리를 만들고 있다는 문제에 매달렸다. 하지만 주소 집합에 지정할 수는 없습니다.생성 된 새 카테고리를 TYPO3 8.7에 설정된 가져온 tt_address에 추가하십시오.

누군가가이 작업을 수행하는 방법을 알고 있었습니까?

$jsondivision ='JsonCategorieName' 
$address = 'AddressSet' 
$categoryParent = 'PartentUID' 

public function checkCategory($jsondivision, $address) { 
    $extbaseObjectManager = GeneralUtility::makeInstance('TYPO3\CMS\Extbase\Object\ObjectManager'); 
    $this->addressRepository = $extbaseObjectManager->get('Graphodata\Gdjson2ttaddress\Domain\Repository\GdAddressRepository'); 
    $this->objectStorage = $extbaseObjectManager->get('TYPO3\CMS\Extbase\Persistence\ObjectStorage'); 
    $this->categoryRepository = $extbaseObjectManager->get('Graphodata\Gdjson2ttaddress\Domain\Repository\GdCategoryRepository'); 
    $newCategory = $extbaseObjectManager->get('Graphodata\Gdjson2ttaddress\Domain\Model\GdCategory'); 

    $newCategory->setTitle($jsondivision); 
    $newCategory->setParent($categoryParent); 
    $this->categoryRepository->add($newCategory); 
    $address->addressRepository($newCategory); 
} 
+0

'$ address-> addressRepository ($ newCategory);는 무엇을합니까? – Wolfgang

+0

그것은 CategorieUid를 AddressSet으로 설정합니다 ... 잘못된 것을 알고 있지만 올바르게 설정하는 방법을 모릅니다. tt_Address는 m : n 관계로 typo3 sys_categorie를 사용합니다. 오타는 카테고리를 올바르게 설정하기위한 재미가 있어야합니다. – hrdyy

답변

0

당신은 분명히 이미 분류 모델 (Graphodata\Gdjson2ttaddress\Domain\Model\GdCategory)를 가지고, 그래서 당신은 같은 주소 모델에서의 관계를 설정해야합니다

/** 
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Graphodata\Gdjson2ttaddress\Domain\Model\GdCategory> 
* @lazy 
*/ 
protected $categories; 

와 게터, 세터 추가 카테고리를 추가하는 방법을 추가

/** 
* Get categories 
* 
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Graphodata\Gdjson2ttaddress\Domain\Model\GdCategory> 
*/ 
public function getCategories() 
{ 
    return $this->categories; 
} 

/** 
* Set categories 
* 
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage $categories 
*/ 
public function setCategories($categories) 
{ 
    $this->categories = $categories; 
} 

/** 
* Adds a category to this categories. 
* 
* @param \Graphodata\Gdjson2ttaddress\Domain\Model\GdCategory $category 
*/ 
public function addCategory($category) 
{ 
    $this->getCategories()->attach($category); 
} 

주의 : 당신의 주소 모델에 TCA 설정이 될 몇 가지의 requir 일치 할 필요는이 작품을 만들기 위해 ements. 예를 들어 news 확장명 (.../news/Configuration/TCA/tx_news_domain_model_news.php)을보고 어떻게 작동하는지 확인하십시오. 다음과 같은 것 :

… 
'categories' => [ 
    'config' => [ 
     'type' => 'select', 
     … 
     'MM' => 'sys_category_record_mm', 
     'MM_match_fields' => [ 
      'fieldname' => 'categories', 
      'tablenames' => 'tx_gdjson2ttaddress_gdaddress', 
     ], 
     'MM_opposite_field' => 'items', 
     'foreign_table' => 'sys_category', 
     'foreign_table_where' => ' AND (sys_category.sys_language_uid = 0 OR sys_category.l10n_parent = 0) ORDER BY sys_category.sorting', 
     … 
    ] 
] 
+0

고마워, 지금은이 ..하지만 난 주소 집합에 카테고리를 설정할 수 없습니다 .. – hrdyy