【问题标题】: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】:

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

        【讨论】:

        • 感谢您的回答。好吧,原始的 sluggable 代码非常复杂,并且适用于刷新实体,但对我来说,单独使用它来简单地从文本生成 slug 太难了。但我在KNP bundle 中找到了不错的代码 - 我将使用 preg_replace 简单地复制 2 行,这对我来说足够好。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-01
        • 1970-01-01
        • 2017-03-16
        • 2022-08-16
        • 1970-01-01
        • 2020-01-18
        相关资源
        最近更新 更多