Symfony2,Doctrine2:非英语/ letin slug

时间:2012-02-12 11:54:21

标签: utf-8 symfony doctrine-orm slug

我有一个社区,用户可以使用希伯来语或阿拉伯语等国际语言制作自己的主题

我有主题的“名称”字段,我想从中生成slu

现在我用阿拉伯语测试了它,使用了stofdoctrineBundle和Doctrine扩展

我设置了这样的slu

/**
 * @Gedmo\Slug(fields={"name"})
 * @ORM\Column(length=255, unique=true, nullable=false)
 */
private $slug;

当我尝试用阿拉伯语创建一个新主题时,请说这个字符串“عليقرا”,doctrine sluggable生成以下 slug:ly-qr

所以我的目标是拥有像这样的完整网址

http://www.mysite.com /علي-قرا

出于搜索引擎优化的原因。

2 个答案:

答案 0 :(得分:4)

弗洛里安,我试过你的方式,但看起来太复杂了我的需求,所以我走了一条更容易的道路:

  • 完全停用了学说扩展

  • 在Utils \ MyFunctions下创建了一个新类,并使用基于symfony2博客教程的静态方法slugify。

  • 设置名称时,我也用它设置了slug

    public function setName($name)
    {
     $this->name = $name;
     $this->setSlug($this->name);
    }
    
    public function setSlug($slug)
    {
    
      //now we generate the slug, from the utilities my function
      $slug = Myfunctions::slugify($slug);
      $this->slug = $slug;
    }
    

问题解决了,阿拉伯语现在显得很好了。

答案 1 :(得分:2)

在gedmo的学说扩展中,slugifier的默认行为是将所有字符转换为ASCII。

如果您不想要这种行为,则必须创建自己的处理程序和/或您自己的 transliterator 方法。

文档here很好地解释了如何做到这一点。