2012-01-12 12 views
0

経路を動的に追加したいと考えています。私はデータベースの文書のツリーを格納しています。その木の文書の位置に基づいて、私は特定の文書のためのURLを生成することができます。問題は、そのツリーにドキュメントを追加するたびに、url matcherが事前にキャッシュされているため、キャッシュを消去する必要があることです。しかし、キャッシュディレクトリの内容を削除してコントローラ内部のキャッシュを消去するとエラーがスローされます。どのように解決する方法はありますか?symfony2キャッシュされたルートをコントローラ内でリセットする方法は?

より多くの問題仕様:

(でも、特定のパラメータを持つ)文書の種類、そのと呼ばれる特定のコントローラとアクションに基づいたので、私は、作成するために、より多くのルートを必要とします。ツリー項目エンティティでは、url_partと、コントローラとアクションのような特定のルートを作成するためのいくつかのパラメータを格納し、そのコントローラに渡されるパラメータを格納します。エンティティには、そのデータからルートを構築する方法を知っているメソッドgetRoute()があります。それから私は例のページ文書を持っている、それはエンティティページと呼ばれ、ツリー項目(私は継承を混乱させたくない)との関係を持っています。私はページを作成するときに、関連するツリー項目のデータを埋める方法を知っています。問題は、私はページを作成するとき、その既存のルートとの未検証のキャッシュではありません。キャッシュされたルートを持っていたいので、ページを作成した後でキャッシュされたルートをリセットしたい。

答えて

0

なぜ経路を動的に生成したいのですか?スラッシュを許可するパターンで単一のルートを作成できませんか?

以前はSymfony2を使って同様のCMSを作っていましたが、StofDoctrineExtensionsBundleTreeSluggableをご覧ください)を使用しました。

Documentエンティティは、ツリー構造をサポートするために、次のフィールドを持っていた:

/** 
* @Gedmo\TreeLeft 
* @ORM\Column(name="`left`", type="integer") 
*/ 
private $left; 

/** 
* @Gedmo\TreeLevel 
* @ORM\Column(name="level", type="integer") 
*/ 
private $level; 

/** 
* @Gedmo\TreeRight 
* @ORM\Column(name="`right`", type="integer") 
*/ 
private $right; 

/** 
* @Gedmo\TreeRoot 
* @ORM\Column(name="root", type="integer", nullable=true) 
*/ 
private $root; 

/** 
* @Gedmo\TreeParent 
* @ORM\ManyToOne(targetEntity="Page", inversedBy="children") 
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id", onDelete="SET NULL") 
*/ 
private $parent; 

/** 
* @ORM\OneToMany(targetEntity="Page", mappedBy="parent") 
* @ORM\OrderBy({"left" = "ASC"}) 
*/ 
private $children; 

と階層を反映slugフィールド:

/** 
* @var string $slug 
* 
* @ORM\Column(name="slug", type="string", length=255, unique=true) 
* @Gedmo\Slug(handlers={ 
*  @Gedmo\SlugHandler(class="Gedmo\Sluggable\Handler\TreeSlugHandler", options={ 
*   @Gedmo\SlugHandlerOption(name="parentRelationField", value="parent"), 
*   @Gedmo\SlugHandlerOption(name="separator", value="/") 
*  }) 
* }, fields={"title"}) 
*/ 
private $slug; 

は、あなたが探しているものをこのありませんか?

+0

よくわからない、私は質問を更新しました – ramoo

関連する問題