재미 있지만 이것은 Cake PHP의 문서화되지 않은 부분입니다. docuamntation은 parent_id를 "null"로 설정하는 데 필요한 트리의 최상위 요소를 말합니다. 당신이 재주문을 호출하는 경우 (300)
그래서 TreeBehavior 라인 주위에
if ($id === null && $Model->id) {
$id = $Model->id;
} elseif (!$id) {
$id = null;
}
: 당신이 편집에 elemet을 저장할 때 재주문 아이들을 찾고 흥미로운 조건이 있기 때문에 는하지만, 재주문하지 작동 id => null이고 $ Model-> id이면 실제 트리 항목은 재정렬 될 것입니다. 그것은 틀렸어. 왜냐하면 내가 최상위 범주 항목에서 주문 필드를 변경했기 때문에 나는 나무 전체를 재정렬하고 싶다. 나는 그것이 일종의 버그라고 생각한다.
id => ''를 비워두면 전체 트리가 재정렬됩니다. 그게 니가 원하는거야. 당신이 당신의 상위 트리 항목을 편집하고 순서를 변경하고자 할 때 당신은 당신의 나무의 전체 순서를 변경한다 => ''
if(!empty($this->data['WebshopCategory']['parent_id'])){
$this->reorder (array('id' => $this->data['WebshopCategory']['parent_id'], 'field' => 'ordered', 'order' => 'ASC', 'verify' => true));
}else{
$this->reorder (array('id'=>'', 'field' => 'ordered', 'order' => 'ASC', 'verify' => true));
}
ID로 재주문를 호출해야합니다. 참고 : 트리 항목이 많으면 저장 속도가 느려지므로 주문 필드가 변경되었는지 확인해야합니다.
SOLVED! $ model-> save() 메소드를 호출 할 때, 데이터를 보내고 (추가시) ID를 보내면 Behavior가 작동하는 것으로 나타났습니다. 그래서, 나는 그것과 ID를 보내는 것을 생략하고 지금은 작동합니다. (ID를 보낸 이유는 이전 테이블에서 데이터를 가져 오기 때문이었습니다). – Magnus