【问题标题】:case sensitive doesn't work in sluggable on server with uppercas区分大小写在大写服务器上的 sluggable 中不起作用
【发布时间】:2020-05-05 15:08:53
【问题描述】:

我在 Laravel 中使用 sluggable 包。当我用大写或小写存储相同的字母时,它不知道它们是相同的!例如 'myFlower' 和 'myflower' 分配不同的案例。如果有人有想法,我会很高兴?

class testController extends Model
{
    use Sluggable;

    protected $fillable = [
        'name', 'slug',
    ];

    public function sluggable()
    {
        return [
            'slug' => [
                'source' => 'name'
            ]
        ];
    }

    public function getRouteKeyName()
    {
        return 'slug';
    }
}

【问题讨论】:

    标签: laravel case-sensitive slug


    【解决方案1】:

    您可以尝试添加一个新的访问器并将其用作源,如下所示:

    class testController extends Model
    {
        use Sluggable;
    
        protected $fillable = [
            'name', 'slug',
        ];
    
        public function sluggable()
        {
            return [
                'slug' => [
                    'source' => 'lowercase_name'
                ]
            ];
        }
    
        public function getRouteKeyName()
        {
            return 'slug';
        }
    
        public function getLowercaseNameAttribute() {
            return strtolower($this->name);
        }
    }
    

    【讨论】:

      【解决方案2】:

      \config\sluggable.php文件中,有一个方法函数。函数的最后一行是:

      return preg_replace(array_keys($map), array_values($map), $string);
      

      $string 替换为strtolower($string)。该行应该是这样的:

      return preg_replace(array_keys($map), array_values($map), strtolower($string));
      

      这会导致所有字母在被用来制作slug之前都变成小写,这样两个不同字母大小写的相同单词就不会被视为两个不同的单词。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-20
        • 2015-01-02
        • 1970-01-01
        • 1970-01-01
        • 2012-12-01
        • 2013-03-06
        • 2020-02-18
        • 1970-01-01
        相关资源
        最近更新 更多