symfonyのnestedSetの動作をdoctrineを使って調べて、CMSの管理モジュールにnestedSet hierachyを表示しています。doctrineのアイテムを注文する
私は見つけました:http://redotheoffice.com/?tag=doctrine-drag-drop-admin-generator-symfony-nestedset一見したところで素晴らしいと私は今これを実装しました。
私の問題はrootノードを整理しようとしているときに起こります。ルートノードはroot_idで整理されているため、この実装ではできません。
私は以下を見つけました:http://blog.rajatpandit.com/2010/03/27/ordering-list-of-items-doctrine-symfony-1-4/しかし、ドラッグアンドドロップのネストセットをレンダリングするためのカスタムテンプレートがすでに作成されていますので、これを使用しようとしています。
//generator.yml
object_actions:
new:
_edit: ~
_delete: ~
moveUp:
moveDown:
私はactions.class.php
にコードをコピーして、私のモデルクラスは上記のリンクを形成しています。
up
またはdown
が、それは上のエラーをスローノードに移動しようとしている:executeUp()とexecuteDown()で$this->current_report->getId(),
を
Fatal error: Call to a member function getId() on a non-object
私はその後、$this->current_report = new Tree()
を使用してcurrent_report
オブジェクトを作成しようとすると、Iその後、別のエラーを取得:
Fatal error: Call to a member function setPosition() on a non-object
これは私のファイル内にあり、この方法は、swapWith()
位置は、私がroot_idではなく並べ替えに使用しているフィールドです。
誰かが私にこれを手伝うことができたら、私は大いに感謝します。
おかげ
を私は単に私は現在、3つのルートノードを持っているので、位置によってそれらを注文したいとして配置されていますフロントエンドの 'id'でネストされたセットです。だから私は、ノードを削除して別の順序でそれらを再追加するのではなく、別の順序でそれらを表示できるようにしたいと思います。それが意味をなさない? – terrid25
私がこれを行うと考えることができる唯一の方法は、ルートノードの順序を追跡するための独自のメカニズムを持つことです。 Doctrine Nested Setsのみに依存している場合は、ルートノードを削除/再作成して再順序付けすることができます。このため、偽のルートレベルを作成してルートノードを第1レベルに格納する必要があると説明しています。 – jgallant
あなたのプラグインを見てきました。私が探していることをするように見えます。フロントエンドにあるように、「偽のノード」がナビゲーションメニューを壊しているように、ちょっとハックする必要があるかもしれません。 – terrid25