Symfony2, Doctrine2: не английский / слизняк - PullRequest
1 голос
/ 12 февраля 2012

У меня есть сообщество, где пользователи могут создавать свои собственные темы, в том числе на международных языках, таких как иврит или арабский

У меня есть поле "name" в теме, и я хочу создать из него слагов

Теперь я протестировал его на арабском языке, используя расширения stofdoctrineBundle и Doctrine

Я установил слаг таким образом

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

и когда я пытаюсь создать новую тему с арабским языком, произнесите эту строку "علي قرا", sluggable доктрины сгенерировал следующий slug: ly-qr

поэтому моя цель - создать полный URL-адрес, подобный этому

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

по причинам SEO.

Ответы [ 2 ]

4 голосов
/ 13 февраля 2012

Флориан, я попробовал ваш путь, но он выглядел слишком сложным для моих нужд, поэтому я пошел более легким путем:

  • полностью отключенные расширения доктрины

  • создал новый класс в Utils \ MyFunctions и поместил статический метод slugify, основанный на обучающей программе блога symfony2.

  • при установке имени, я также установил 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;
    }
    

Проблема решена, и арабский язык теперь показывает штраф как слаг.

2 голосов
/ 12 февраля 2012

Поведение slugifier по умолчанию в расширениях доктрины gedmo заключается в преобразовании всех символов в ASCII.

Если вам не нужно это поведение, вам придется создать собственный обработчик и / или ваш собственный метод транслитерации .

Документы здесь хорошо объясняют, как это сделать.

...