4

我在 Symfony2 项目中使用 sluggable 行为,但现在我想根据不同的文本(当前标题、旧标题、来自表单输入的用户文本)为一个页面制作许多 slug,并将其保存在另一个页面中桌子。我的问题是 - 如何手动使用任何文本的学说扩展?我在任何地方都找不到它。完美会是这样的:

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

3 回答 3

20

我在这里偶然找到了解决方案。代码:

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;
于 2013-09-07T10:58:05.023 回答
1

在此处找到用于生成 slug 的学说代码:l3pp4rd/DoctrineExtensions。使用该类可以随心所欲,但您可能需要创建自己的服务来实现您想要的简单使用。有关服务的更多详细信息,请参阅文档的服务容器部分。

于 2013-09-01T10:28:14.123 回答
0

Sluggable\Urlizer::urlize似乎'替换为-. 我不得不使用Sluggable\Urlizer::transliterate更接近 SluggableListener 的行为。

于 2018-10-21T18:32:18.493 回答