2013-01-31 42 views
0

我有Post模型和職位表,簡化的重新排序的職位看起來是這樣的:CakePHP的樹的行爲:不同類型的

id | parent_id | lft| rght| title | body | type 

類型可以是「網頁」,「新」,「服務」等

我根據崗位類型,FE呈現不同的視圖模板:

public function admin_view($id, $type){ 
    $posts = $this->paginate(array('Post.type' => $type)); 
    $this->set('posts', $posts); 
} 

發帖的reordable,我用樹行爲功能爲moveUp()和下移()。主要的問題是,當我渲染僅包含確切類型帖子的視圖時,可能會發生moveUp()或moveDow()函數會切換不同類型帖子的位置。在當前視圖中不會顯示任何更改。

是否有任何其他範圍條件傳遞樹行爲?我瀏覽了所有的代碼,但找不到任何能幫助我的東西。

回答

0

樹行爲確實具有範圍特徵。附加這樣的行爲: $this->Post->Behaviors->attach('Tree', array('scope' => array('Post.group' => $type)));。這樣你可以爲每種類型管理不同的子樹。確保在Post模型的所有操作之前設置適當的範圍。

+0

我無法讓它工作。使用: $ this-> Post-> Behaviors-> attach('Tree',array('scope'=> array('Post.type'=>'action'))); function moveUp()返回false,lft值不變。我試着先分離行爲,或者不要在模型公共變量中聲明它,但沒有運氣。 – user1131522

+0

您將需要從頭開始並重新構建您的樹,並使其工作。 – ADmad