興味深いですが、これはCakephpの文書化されていない部分です。ドキュメントには次のように書かれています。parent_idを「null」に設定するために必要なツリーの最上位要素。ただし、編集時に要素を保存すると、子を探して並べ替えるときに興味深い条件があるため、並べ替えは機能しません。
if ($id === null && $Model->id) {
$id = $Model->id;
} elseif (!$id) {
$id = null;
}
TreeBehaviorライン300の周り。
したがって、id => nullでreorderを呼び出し、$ Model-> idがある場合、実際のツリーアイテムのみが並べ替えられます。間違っています。最上位のカテゴリアイテムの注文フィールドを変更したため、ツリー全体を並べ替えたいと思います。一種のバグだと思います。
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) );
}
ツリー全体が並べ替えられます。注:ツリーアイテムが多いと保存が遅くなるため、注文フィールドが変更されたかどうかを確認する必要があります。