2013-09-01 5 views
2

Я использую sluggable поведение в моем проекте Symfony2, но теперь я хотел бы сделать много слизней для одной страницы на основе разных текстов (текущее название, старый заголовок, текст пользователя из ввода формы) и сохраните его в другой таблице. И мой вопрос: как вручную использовать расширения доктрины для любого текста? Я не могу найти его нигде. Идеально было бы что-то вроде:Создание пулов доктрины вручную

/* careful - it's not a real, working code! */ 
$sluggable = new DoctrineSluggable(); 
$slug = $sluggable->generate('My own text!'); 
echo $slug; // my-own-text 

ответ

1

Найти код доктриной для создания слизняка здесь: l3pp4rd/DoctrineExtensions. Игра с этим классом могла бы поступить так, как вам хочется, но вы, вероятно, захотите создать свой собственный сервис, чтобы реализовать легкое использование по своему усмотрению. Дополнительную информацию об услугах см. В разделе документации для Service Container.

+1

Благодарим вас за ответ. Ну, оригинальный проскальзываемый код довольно сложный и работает хорошо с очищающими объектами, но для меня слишком сложно использовать его в одиночку для простого создания пули из текста. Но я нашел хороший код в [KNP bundle] (https://github.com/KnpLabs/DoctrineBehaviors/blob/master/src/Knp/DoctrineBehaviors/Model/Sluggable/Sluggable.php#L84) - я просто скопирую 2 линии с preg_replace, которые работают достаточно хорошо для меня. – Radzikowski

12

Я нашел решение случайно here. Код:

use Gedmo\Sluggable\Util as Sluggable;  

$string = 'My own text!'; 
$slug = Sluggable\Urlizer::urlize($string, '-'); 
    if(empty($slug)) // if $string is like '=))' or 'トライアングル・サービス' an empty slug will be returned, that causes troubles and throws no exception 
     echo 'error, empty slug!!!'; 
    else 
     echo $slug;