Caching 如何在控制器内重置symfony2缓存路由?

Caching 如何在控制器内重置symfony2缓存路由?,caching,routing,symfony,Caching,Routing,Symfony,我想动态添加路由。我正在数据库中存储文档树。根据文档在树中的位置,我可以生成特定文档的url。问题是,每当我向那个棵树添加文档时,我都必须清理缓存,因为url匹配器是预先设置好的。但若我通过删除缓存目录的内容来清除控制器内的缓存,则会引发错误。有没有办法,怎么解决 更多问题说明: 我需要创建更多的路由,因为基于文档类型,它被称为特定控制器和操作(即使有特定参数)。在树项目实体中,我存储url_部分和一些参数来创建特定的路由(如控制器和操作),然后存储参数,这些参数被传递给该控制器。实体具有get

我想动态添加路由。我正在数据库中存储文档树。根据文档在树中的位置,我可以生成特定文档的url。问题是,每当我向那个棵树添加文档时,我都必须清理缓存,因为url匹配器是预先设置好的。但若我通过删除缓存目录的内容来清除控制器内的缓存,则会引发错误。有没有办法,怎么解决

更多问题说明:


我需要创建更多的路由,因为基于文档类型,它被称为特定控制器和操作(即使有特定参数)。在树项目实体中,我存储url_部分和一些参数来创建特定的路由(如控制器和操作),然后存储参数,这些参数被传递给该控制器。实体具有getRoute()方法,该方法知道如何从其数据构建路由。然后我有一个例子页面文档,它是一个名为页面的实体,它和树项有关系(我不想搞砸继承)。当我创建页面时,它知道如何填充相关树项的数据。问题是,当我创建页面时,它不是现有路由的未验证缓存。我想缓存路由,所以在创建页面后,我想重置缓存的路由。

为什么要动态生成路由?你不能用允许斜线的模式创建一条单独的路由吗

我以前使用Symfony2制作过类似的CMS,我使用过(看看
slaggable

我的
文档
实体具有以下字段以支持树结构:

/**
 * @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;
这不是你要找的吗