【问题标题】:Is it possible to specify forbidden values on a slug field?是否可以在 slug 字段上指定禁止值?
【发布时间】:2018-08-17 23:26:16
【问题描述】:

我有一个实体,它有一个使用 Gedmo Slug 库定义和管理的 slug 字段。

是否可以轻松地为该字段定义不需要的值列表(例如'edit'、'new'、'delete'...),还是我需要自己做一些事情?

【问题讨论】:

  • 例如,使用 Doctrine 的事件,您可以检查方法“preInsert”中的禁止值。因此,'BaseEntity' 有一个带有 ['new', 'edit', 'delete'] 的常量数组,每个子实体中的 'preInsert' 方法检查将生成的 slug 是否等于这些禁止值之一。
  • 您是否尝试在您的字段中使用正则表达式验证器并将您的话列入黑名单? regex validator
  • 使用 Doctrine 事件是一个坏主意和坏习惯,它们不是为了验证表单中的数据!验证不同,您可以使用 2 种不同的约束,一种用于 slug(gedmo),另一种用于将单词列入黑名单(regex)。
  • 我的问题不在于来自表单的数据。例如,用户可以创建标题为 Edit 的博客文章。我只是不希望 Slug 自动为博客文章的slug 保存一个等于edit 的字符串,而是例如保存edit_1。我想知道这个用例是否计划在 Slug 库中,似乎没有。当我有时间的时候,我会尝试那些被告知的建议。

标签: symfony slug


【解决方案1】:

希望能理解您的要求。它缺乏一点清晰度。

在我看来,Gedmo 库不能轻易做到这一点。

在你的位置上,我将创建一个值,我将根据你的要求工作,我会让注释 slug 使用这个值。

【讨论】:

    【解决方案2】:

    我猜你可以使用 SlugHandler。

    看看这个:http://atlantic18.github.io/DoctrineExtensions/doc/sluggable.html#slug-handlers

    您可以创建自己的SlugHandler,在SlugHandlerOption 中添加一些禁止使用的词,然后使用简单的正则表达式来检查生成的 slug 是否有效。

    如果没有,您可以修改生成的 slug 或抛出异常。

    【讨论】:

      猜你喜欢
      • 2012-11-03
      • 1970-01-01
      • 1970-01-01
      • 2019-05-11
      • 1970-01-01
      • 1970-01-01
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多