2014-11-26 1 views
0

정렬 액세스를 extbase :TYPO3는 중첩 된 배열이 뢰 디게

building 
[+]floor 
    [+]room 

하여 하위 배열이 UID가 아니라 내가 가지고있는 "정렬"으로 분류 확장 + 클릭 내 저장소에 지정되었습니다.

protected $defaultOrderings = array(
    'sorting' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING 
); 

어떻게 든 정렬 값에 액세스 할 수 있습니까? 아니면 정렬 후 TYPO3에서 자체 배열을 정렬하도록 할 수 있습니까?

+0

BE에서 수동으로 정렬 할 수 있습니까? – Urs

+1

도움이 필요하면 더 많은 정보를 제공해야합니다. 나는 building-> floor-> room이 중첩 된 배열이 아니라 관계로 연결된 일부 모델이라고 생각한다. 어떤 관계입니까? 1 : n, m : n? 가능한 것은 관계의 종류에 달려 있습니다. – lorenz

+1

사실, 우리는 더 많은 정보가 필요합니다. 이것은 아마도'TCA'에서 잘못 구성되었을 것입니다. –

답변

-1

당신은

0

소트 필드를 수동으로 설정하지 않아야 정렬 $ 보호 (필요한 경우 세터) 관련 게터를 모델의 정수로 정의하고 작성하여 정렬 속성에 액세스 할 수 있습니다.

항목을 정렬하려면 Typo3 Backend와 같은 DataHandler를 사용하십시오. , 당신은 하위 객체 당신이 TCA에 지정된 방식으로 정렬되지 않습니다 것을 의미한다 "는 + 클릭"으로 TYPO3 CommandController: How to set table field "sorting" of Extbase Object?

0

: 여기

해결책인가?

기본적으로 Extbases PersistenceRepository는 개체 자체에 지정된 순서에 따라 정렬하기 때문에 하위 개체에서는 정렬이 손실됩니다. 그러나 더 비기을 이잖아, 당신은 단지의 하위 속성에 의해 주문을 지정해야합니다 중 하나 defaultOrderings 속성 또는 쿼리 구축 할 때 :

class FloorRepository extends \TYPO3\CMS\Extbase\Persistence\Repository { 

    // Order by BE sorting 
    protected $defaultOrderings = array(
     'sorting' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING 
     'room.sorting' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING 
    ); 

    ... 

} 

이 당신에게 층의 객실을 제공합니다,의 정렬 순서에 따라 정렬을 각 층마다 층별 분류로 정렬.

관련 문제