регистр не работает в sluggable на сервере с uppercas - PullRequest
1 голос
/ 19 января 2020

Я использую sluggable пакет в Laravel. Когда я храню одинаковые буквы в верхнем или нижнем регистре, я не знаю, что они одинаковые! например, 'myFlower' и 'myflower' назначают разные случаи. Я буду рад, если у кого-нибудь есть идеи?

class testController extends Model
{
    use Sluggable;

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

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

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

Ответы [ 2 ]

2 голосов
/ 19 января 2020

Вы можете попытаться добавить новый аксессор и использовать его в качестве источника:

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);
    }
}
0 голосов
/ 20 января 2020

В файле \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));

Это приведет к тому, что все буквы станут строчными, прежде чем их будут использовать для создания слагов, поэтому два одинаковых слова с разными регистрами букв не будут рассматриваться как два разных слова.

...