مهرداد
5 سال پیش توسط مهرداد مطرح شد
5 پاسخ

اسلاگ فارسی

سلام من sluggable رو نصب کردم توی کانفیک بخش متد هم کد زیر رو قرار دادم اما کار نمیکنه برام اسلاگ فارسی نمیشه

    'method' => function($string, $separator = '-') {
        $_transliteration = array(
            '/ä|æ|ǽ/' => 'ae',
            '/ö|œ/' => 'oe',
            '/ü/' => 'ue',
            '/Ä/' => 'Ae',
            '/Ü/' => 'Ue',
            '/Ö/' => 'Oe',
            '/À|Á|Â|Ã|Å|Ǻ|Ā|Ă|Ą|Ǎ/' => 'A',
            '/à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª/' => 'a',
            '/Ç|Ć|Ĉ|Ċ|Č/' => 'C',
            '/ç|ć|ĉ|ċ|č/' => 'c',
            '/Ð|Ď|Đ/' => 'D',
            '/ð|ď|đ/' => 'd',
            '/È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě/' => 'E',
            '/è|é|ê|ë|ē|ĕ|ė|ę|ě/' => 'e',
            '/Ĝ|Ğ|Ġ|Ģ/' => 'G',
            '/ĝ|ğ|ġ|ģ/' => 'g',
            '/Ĥ|Ħ/' => 'H',
            '/ĥ|ħ/' => 'h',
            '/Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ/' => 'I',
            '/ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı/' => 'i',
            '/Ĵ/' => 'J',
            '/ĵ/' => 'j',
            '/Ķ/' => 'K',
            '/ķ/' => 'k',
            '/Ĺ|Ļ|Ľ|Ŀ|Ł/' => 'L',
            '/ĺ|ļ|ľ|ŀ|ł/' => 'l',
            '/Ñ|Ń|Ņ|Ň/' => 'N',
            '/ñ|ń|ņ|ň|ʼn/' => 'n',
            '/Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ/' => 'O',
            '/ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º/' => 'o',
            '/Ŕ|Ŗ|Ř/' => 'R',
            '/ŕ|ŗ|ř/' => 'r',
            '/Ś|Ŝ|Ş|Ș|Š/' => 'S',
            '/ś|ŝ|ş|ș|š|ſ/' => 's',
            '/Ţ|Ț|Ť|Ŧ/' => 'T',
            '/ţ|ț|ť|ŧ/' => 't',
            '/Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ/' => 'U',
            '/ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ/' => 'u',
            '/Ý|Ÿ|Ŷ/' => 'Y',
            '/ý|ÿ|ŷ/' => 'y',
            '/Ŵ/' => 'W',
            '/ŵ/' => 'w',
            '/Ź|Ż|Ž/' => 'Z',
            '/ź|ż|ž/' => 'z',
            '/Æ|Ǽ/' => 'AE',
            '/ß/' => 'ss',
            '/IJ/' => 'IJ',
            '/ij/' => 'ij',
            '/Œ/' => 'OE',
            '/ƒ/' => 'f'
        );

        $quotedReplacement = preg_quote($separator, '/');
        $merge = array(
            '/[^\s\p{Zs}\p{Ll}\p{Lm}\p{Lo}\p{Lt}\p{Lu}\p{Nd}]/mu' => ' ',
            '/[\s\p{Zs}]+/mu' => $separator,
            sprintf('/^[%s]+|[%s]+$/', $quotedReplacement, $quotedReplacement) => '',
        );
        $map = $_transliteration + $merge;
        unset($_transliteration);
        return preg_replace(array_keys($map), array_values($map), $string);
},

از طریق روش زیر هم استفاده میکنم درست کار میکنه اما بعدش میخام هر دستور artisan که بزنم خطا میده میگه شما یه فانکشنی دارید که باید به صورت سنتی یا معمولی بازنویسیش کنی

    'method' => function ($string, $separator) {
        $slug = mb_strtolower(
            preg_replace('/([?]|\p{P}|\s)+/u', $separator, $string)
        );
        return trim($slug, $separator);
    },

ثبت پرسش جدید
نوب
تخصص : کدنویس نوب :)
@yk5742g 5 سال پیش مطرح شد
0

@mehrdadroshanraee69 سلام
آخرین نسخه بسته slug خودش اون کد را داره و نمیخواد وارد کنید
به صورت زیر عمل کنید
کد زیر به صورت مثال توی مدل مورد نظر بزارید

class Categoris extends Model
{
    use Sluggable;
    protected $fillable = [
        'title',
    ];

    /**
     * @inheritDoc
     */
    public function sluggable(): array
    {
        return [
            'slug' => [
                'source' => 'title'
            ]
        ];
    }
}

این خط هم بالای مدل مورد نظر use کنین

use Cviebrock\EloquentSluggable\Sluggable;

vendor:publish هم یادتون نره


coarad supp
تخصص : برنامه نویس لاراول
@coaradsupp 5 سال پیش مطرح شد
0

این مورد رو تست کنید، خبرش رو هم لطفا اعلام کنید
توی هلپرفانکشن هاتون اینو اضافه کنید

if (! function_exists('str_to_slug')) {
    /**
     * Returns slug for string.
     *
     * @param string $string
     * @param string $separator
     * @return string
     */
    function str_to_slug(string $string, string $separator = '-')
    {
        $string = fa_to_en(trim(mb_strtolower($string)));
        $string = preg_replace('!['.preg_quote($separator === '-' ? '_' : '-').']+!u', $separator, $string);

        return preg_replace(
            '/\\'.$separator.'{2,}/',
            $separator,
            preg_replace('/[^A-Za-z0-9\x{0620}-\x{064A}\x{0698}\x{067E}\x{0686}\x{06AF}\x{06CC}\x{06A9}]/ui', $separator, $string)
        );
    }
}

و توی فایل کانفیگ

'method' => 'str_to_slug',

مهرداد
@mehrdadroshanraee69 5 سال پیش مطرح شد
0

@yk5742g
همه اینکارا رو که فرمودید انجام دادم قبلا اما کار نمیکنه


مهرداد
@mehrdadroshanraee69 5 سال پیش مطرح شد
0

@coaradsupp
نه دوست عزیز نشد


Armin Rahmati
@arminrahmati999 5 سال پیش مطرح شد
0

@mehrdadroshanraee69
سلام.
لطفا کنید کدهای مدل و روت رو بفرستید.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام