【问题标题】:Generating doctrine slugs manually手动生成学说 slug
【发布时间】:2013-09-04 14:04:46
【问题描述】:
我在 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
【问题讨论】:
标签:
symfony
doctrine-orm
slug
stofdoctrineextensions
【解决方案1】:
Sluggable\Urlizer::urlize 似乎将' 替换为-。
我不得不使用 Sluggable\Urlizer::transliterate 来更接近 SluggableListener 的行为。
【解决方案2】:
我偶然找到了解决方案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;
【解决方案3】:
【讨论】:
-
感谢您的回答。好吧,原始的 sluggable 代码非常复杂,并且适用于刷新实体,但对我来说,单独使用它来简单地从文本生成 slug 太难了。但我在KNP bundle 中找到了不错的代码 - 我将使用 preg_replace 简单地复制 2 行,这对我来说足够好。