2014-05-12 3 views
2

기존 도메인 모델을 새 필드로 확장하려고하지만 잘못된 작업을 파악할 수 없습니다. 나는 TYPO3 6.1과 TYPO3 6.2 (최신 버전 인 Extension Builder git master branch)에서 다음을 시도했다.TYPO3 6.1/6.2 - 기존 도메인 모델 확장

  1. 확장 빌더로 새로운 확장 만들기 (공급 업체 : TEST, 확장 키 mytest1)
  2. 을 이름이 "표"
  3. 와 새 테이블 만들기 "TITLE1"
  4. 라는 표를위한 새로운 때에 프로퍼티 만들기 예상대로
  5. 저장 확장
  6. 설치 확장

지금까지 모든 작동합니다. "table1"레코드에 대해 TYPO3 백엔드에서 레코드를 만들고 "title1"에 대한 속성을 입력 할 수 있습니다.

이제 확장 "mytest1"을 새 필드로 확장하려고합니다. 나는 새로운 확장과 함께이 작업을 수행해야합니다, 그래서 나는 다음을 수행 : 이름이 "표"로 새 테이블을 만듭니다

  • (mytest2 : TEST, 확장 키 공급 업체)

    1. 는 확장 빌더와 다른 내선 만들기 현장에서
    2. 는 "\ TEST \ Mytest1 \ 도메인 \ 모델 \ 표"
    3. I 클래스를 입력 "모델 클래스를 기존의 확장", "제목 2"
    4. 저장 확장
    5. 확장
    6. 을 설치라는 새 속성 만들기

    저는 이제 "table1"레코드에 대해 TYPO3 백엔드에 2 개의 필드가 있다고 예상합니다. 사실, 확장 필드 "mytest1"에서 만든 "title1"필드가 있습니다.

    필자가 볼 수있는 한, ext_tables.php와 "ext_typoscript_setup.txt"모두 괜찮아 보입니다. TCA는 추가 필드에 의해 확장되며 또한 extbase 레코드 유형이 괜찮은 것 같습니다. 또한 "table1"에는 "mytest2"ext_tables.sql에 의해 추가 된 새 필드가 들어 있습니다. TCA는로드되지 않는 것 같습니다.

    TYPO3 4.5 및 ExtensionBuilder를 사용하여 동일한 작업을 시도하면 모든 것이 예상대로 작동합니다.

    누락 된 것이 있습니까?

  • 답변

    1
    $tempColumns = array(
        'title2' => array(
         'exclude' => 0, 
         'label' => 'title2', 
         'config' => array(
          'type' => 'input' 
         ) 
        ) 
    ); 
    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('table1', $tempColumns, 1); 
    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('table1', 'title2;;;;1-1-1'); 
    

    TCA의 기존 테이블에 필드를 추가하기에 충분해야합니다. 이거 해봤 니?

    +0

    답변 해 주셔서 감사합니다. 그것은 올바른 방향으로 나를 가리켰으며 (아래 나의 답변/설명 참조) 결과적으로 새로운 필드가 나타납니다. – derhansen

    0

    확장 빌더의 현재 버전은 새로운 필드와 필드 tx_extbase_type 모두와 TCA를 확장, 내가 전술 한 바와 같이 확장 생성을 수행 할 때 잘못된 ext_tables.php에게

    를 만들 것으로 보인다. 여태까지는 그런대로 잘됐다. ext_tables.php의 마지막 행은 addToAllTCAtypes가 호출되는 가장 중요한 행입니다.

    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('tx_mytest1_domain_model_table1', $GLOBALS['TCA']['tx_mytest1_domain_model_table1']['ctrl']['type'],'','after:' . $TCA['tx_mytest1_domain_model_table1']['ctrl']['label']); 
    

    마지막 매개 변수 ($ postition 인) 잘못 :

    확장 빌더는 다음 함수 호출을 생성합니다.$ TCA [ 'tx_test1_domain_model_table1'] [ 'ctrl'] [ 'label']에 구성된 값 다음에 새 TCA 구성을 추가하려고 시도합니다. 실제로는 비어 있습니다 (mytest1 확장에 정의되지 않았으므로).

    이 매개 변수가 존재하지 않는 값 (예 : "after : nonexistingfield")을 가리키면 은 완전히 무시되고 추가되지 않습니다.

    은 내가 addToAllTCAtypes과 함께 전화를 대체 다음

    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('tx_mytest1_domain_model_table1', $GLOBALS['TCA']['tx_mytest1_domain_model_table1']['ctrl']['type'],'',''); 
    

    난 그냥 두 개의 새로운 필드 (제목 2 및 tx_extbase_type)가있는 형태로 표시되고 있다는 결과 빈 $ 위치 매개 변수를 왼쪽 백엔드 (실제로 새 탭에서 Extension Builder는 새로운 필드의 showitem 구성에 --div--를 만듭니다).

    또한 위치를 기존 필드 (예 : 'after : title1')로 지정할 수 있으며 title1 필드 다음에 새 필드 tx_extbase_type이 표시됩니다.

    저는 이것이 Extension Builder의 버그이며 위조품에 문제가 있다고 생각합니다.