【问题标题】:Symfony Doctrine - Prevent slug from being nullSymfony Doctrine - 防止 slug 为空
【发布时间】:2019-10-09 21:57:08
【问题描述】:

我有一个 Article 表,其中唯一可以包含文本的字段是 content

我想从中得到一个蛞蝓

    /**
     * @ORM\Column(type="string", length=64, unique=true)
     * @Gedmo\Slug(fields={"content"})
     */
    private $slug;

我错误地发现,如果我尝试使用某些表情符号,则 slug 会变为 null

我尝试在setter方法中检查slug是否为空,但没有成功

public function setSlug(string $slug): self
    {
        if ($slug)
        {
            $this->slug = $slug;
        }
        else {
            $r = substr(md5(rand()), 0, 7);
            $this->slug = $r;
        }

        return $this;
    }

MySQL 5.7、PHP 7.2、symfony 4.2、字符集 utf8mb4_unicode_ci

有什么想法吗? 我的 symfony 技能是......初学者的水平:)

【问题讨论】:

  • 我看到了关于 slug 的 GitHub 页面,在示例中,他们不使用 setSlug。
  • 错误地我发现如果我尝试使用某些表情符号的 slug 变为 null,这就是为什么我要检查是否为 null ...

标签: symfony doctrine slug


【解决方案1】:

在您的实体中使用 @Assert 以仅允许 alphaNumeric 值并检查它是否不为空:

/**
 * @Assert\NotBlank
 * @Assert\Type(type="alnum")
 * @ORM\Column(type="string", length=64, unique=true)
 * @Gedmo\Slug(fields={"content"})
 */
private $slug;

在此处查看文档:Symfony Validation doc

【讨论】:

  • 你不明白...... Sluggable 的一个错误无法解析表情符号,因此 slug 变为空,所以我需要一个解决方法
猜你喜欢
  • 2017-11-13
  • 1970-01-01
  • 2018-11-20
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多