راکت

اسلاگ فارسی

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);
    },
ثبت پرسش جدید

پاسخ‌ها

5
نوب
نوب
@yk5742g

تخصص: کدنویس نوب :)

@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
coarad supp
@coaradsupp

تخصص: برنامه نویس لاراول

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

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

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

مهرداد
مهرداد
@mehrdadroshanraee69

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

Armin Rahmati
Armin Rahmati
@arminrahmati999

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

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

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