2011-10-28 2 views
1

트리 동작이있는 게시 모델이 있습니다. 각 게시물의보기에는 주문 텍스트 입력 필드가 있습니다. 이 필드를 제출하면 id => order 값을 얻습니다. 이제 순서 순서 값에 따라 각 게시물을 MoveUp 또는 moveDown하여 트리를 재정렬해야합니다.CakePHP- 트리 동작 사용자 지정 순서

예 (제목은 예 그냥 정렬 순서를 따를 수 있습니다) :

하기 전에 :

 
Post1 - order:20 
_Post1.2 - order:20 
_Post1.1 - order:10 
__Post1.1.1 - order:10 
__Post1.1.3 - order:30 
__Post1.1.2 - order:20 
_Post1.3 - order:30 
Post2 - order:10 

후 :

 
Post2 - order:10 
Post1 - order:20 
_Post1.1 - order:10 
__Post1.1.1 - order:10 
__Post1.1.2 - order:20 
__Post1.1.3 - order:30 
_Post1.2 - order:20 
_Post1.3 - order:30 

답변

1

당신은 reorder 기능을 사용할 수 있습니다. 여기에서 확인하십시오 - http://book.cakephp.org/view/1355/reorder

+0

reorder는 데이터베이스의 필드를 기반으로합니다. 다른 사용자가 정의한 값에 따라 재정렬이 필요합니다. – user1018809

+0

흠, 잡았어. 복잡한 소리. 어떤 생각이라도 내 마음 속에 있다면 나는 공유하려고 노력할 것이다. – Rifat

+0

reorder를 사용할 수 있으려면 데이터베이스에 순서를 저장하는 새로운'sort' 칼럼을 추가했다. 그래서 지금 나는 기능을 가지고있다 – user1018809

1

순서 변경을 사용하려면 데이터베이스에 주문을 저장할 sort 열을 새로 추가했습니다. 이제는 함수가 생겼습니다.

그러나 20-30 개 이상의 자식이 있으면 실제로 실행이 느립니다. 여기에서는 한 부모와 두 자녀의 순서 변경에서 생성 된 쿼리의 예를 붙여 넣었습니다. http://pastebin.com/e076Czg5