Symfony - Gedmo 扩展 - slug 与关系

时间:2021-04-19 15:16:38

标签: php symfony annotations slug gedmo-tree

我正在使用 Gedmo 生成我的 slug (https://github.com/doctrine-extensions/DoctrineExtensions/blob/main/doc/sluggable.md#basic-usage-examples)。但这里我处于一个有点特殊的情况。

我想在来自“祖父”实体的实体上创建一个 slug。

基本上我在实体 A 上。实体 A 有作为父实体 B,它有实体 C。 我想从实体 C 的 slug 和实体 A 的字段创建一个 slug。

当我只有一个具有单一关联(在 A 和 B 之间)的蛞蝓时,不用担心。但现在我真的不明白我该怎么做。

例如,对于需要实体 B 的 slug 的 slug,我会有这个:

/**
 * @ORM\Column(type="string", length=255)
 * @Gedmo\Mapping\Annotation\Slug(handlers={
 *      @Gedmo\Mapping\Annotation\SlugHandler(class="Gedmo\Sluggable\Handler\RelativeSlugHandler", options={
 *          @Gedmo\Mapping\Annotation\SlugHandlerOption(name="relationField", value="entityB"),
 *          @Gedmo\Mapping\Annotation\SlugHandlerOption(name="relationSlugField", value="entityB_slug"),
 *          @Gedmo\Mapping\Annotation\SlugHandlerOption(name="separator", value="-")
 *      })
 * }, fields={"reference"})
 */
private ?string $slug = null;

所以我对自己想,如果我还有一个关联,我只需要像这样添加一个relationField行:

/**
 * @ORM\Column(type="string", length=255)
 * @Gedmo\Mapping\Annotation\Slug(handlers={
 *      @Gedmo\Mapping\Annotation\SlugHandler(class="Gedmo\Sluggable\Handler\RelativeSlugHandler", options={
 *          @Gedmo\Mapping\Annotation\SlugHandlerOption(name="relationField", value="entityB"),
 *          @Gedmo\Mapping\Annotation\SlugHandlerOption(name="relationField", value="entityC"),
 *          @Gedmo\Mapping\Annotation\SlugHandlerOption(name="relationSlugField", value="entityC_slug"),
 *          @Gedmo\Mapping\Annotation\SlugHandlerOption(name="separator", value="-")
 *      })
 * }, fields={"reference"})
 */

私有 ?string $slug = null;

我还尝试在关系中直接指出父级,如下所示:

/**
 * @ORM\Column(type="string", length=255)
 * @Gedmo\Mapping\Annotation\Slug(handlers={
 *      @Gedmo\Mapping\Annotation\SlugHandler(class="Gedmo\Sluggable\Handler\RelativeSlugHandler", options={
 *          @Gedmo\Mapping\Annotation\SlugHandlerOption(name="relationField", value="entityB"),
 *          @Gedmo\Mapping\Annotation\SlugHandlerOption(name="relationSlugField", value="entityC.entityC_slug"),
 *          @Gedmo\Mapping\Annotation\SlugHandlerOption(name="separator", value="-")
 *      })
 * }, fields={"reference"})
 */
private ?string $slug = null;

但什么也没有发生,他告诉我他不能把它塞进去。你有什么想法吗?

0 个答案:

没有答案
相关问题