نوب
5 سال پیش توسط نوب مطرح شد
4 پاسخ

جایگزین کردن خط تیره به جای space در Url های فارسی laravel

سلام و عرض ادب
توی لاراول ۷ سایت را کاملا طراحی کردم و فقط یک مشکل دارم.
اونم اینه که توی url منوها که فارسی هستن و دو کلمه یا بیشتر از ۲ کلمه هستن بین کلمات %۲۰ می افته و من میخوام اینو با - یا _ جایگزین کنم ولی نمیشه
مثلا : فروشگاه%۲۰اینترنتی میخوام بشه فروشگاه-اینترنتی
وقتی از تابع str_replace استفاده میکنم و url ها اصلاح میشن، موقع کلیک کردن route صفحه ۴۰۴ را برمیگردونه
۲ تا تابع هم خود لاراول ۷ برای این کار داده که فقط برای حروف انگلیسی کار میکنه

چطور این مشکل را برای کلمات فارسی حل کنم ؟
ممنون میشم پاسخ بدید.
سپاس


ثبت پرسش جدید
سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 5 سال پیش مطرح شد
2

پکیج sluggable نصب کن
https://github.com/cviebrock/eloquent-sluggable

اسلاگ رو توی راکت سرچ کن نحوه نصب و راه اندازی و فارسی کردن رو دوستان گفتن


Soh3illl
تخصص : برنامه نویس php
@soh3illl 5 سال پیش مطرح شد
1

@yk5742g
سلام
همین طور که دوست عزیزمون آقای موسوی فرمودند باید از پکیج eloquent sluggable استفاده کنید. بعدش وارد پوشه config بشید و فایل sluggable رو باز کنید و در بخش مربوط به method کد زیر رو قرار بدید.

function($string, $separator = '-') {
        $_transliteration = ["/ö|œ/" => "e",
            "/ü/" => "e",
            "/Ä/" => "e",
            "/Ü/" => "e",
            "/Ö/" => "e",
            "/À|Á|Â|Ã|Å|Ǻ|Ā|Ă|Ą|Ǎ/" => "",
            "/à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª/" => "",
            "/Ç|Ć|Ĉ|Ċ|Č/" => "",
            "/ç|ć|ĉ|ċ|č/" => "",
            "/Ð|Ď|Đ/" => "",
            "/ð|ď|đ/" => "",
            "/È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě/" => "",
            "/è|é|ê|ë|ē|ĕ|ė|ę|ě/" => "",
            "/Ĝ|Ğ|Ġ|Ģ/" => "",
            "/ĝ|ğ|ġ|ģ/" => "",
            "/Ĥ|Ħ/" => "",
            "/ĥ|ħ/" => "",
            "/Ì|Í|Î|Ï|Ĩ|Ī| Ĭ|Ǐ|Į|İ/" => "",
            "/ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı/" => "",
            "/Ĵ/" => "",
            "/ĵ/" => "",
            "/Ķ/" => "",
            "/ķ/" => "",
            "/Ĺ|Ļ|Ľ|Ŀ|Ł/" => "",
            "/ĺ|ļ|ľ|ŀ|ł/" => "",
            "/Ñ|Ń|Ņ|Ň/" => "",
            "/ñ|ń|ņ|ň|ʼn/" => "",
            "/Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ/" => "",
            "/ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º/" => "",
            "/Ŕ|Ŗ|Ř/" => "",
            "/ŕ|ŗ|ř/" => "",
            "/Ś|Ŝ|Ş|Ș|Š/" => "",
            "/ś|ŝ|ş|ș|š|ſ/" => "",
            "/Ţ|Ț|Ť|Ŧ/" => "",
            "/ţ|ț|ť|ŧ/" => "",
            "/Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ/" => "",
            "/ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ/" => "",
            "/Ý|Ÿ|Ŷ/" => "",
            "/ý|ÿ|ŷ/" => "",
            "/Ŵ/" => "",
            "/ŵ/" => "",
            "/Ź|Ż|Ž/" => "",
            "/ź|ż|ž/" => "",
            "/Æ|Ǽ/" => "E",
            "/ß/" => "s",
            "/IJ/" => "J",
            "/ij/" => "j",
            "/Œ/" => "E",
            "/ƒ/" => ""];
        $quotedReplacement = preg_quote($separator, '/');
        $merge = [
            '/[^\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);
    },

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

ممنو عزیران
من با دستور composer پکیج مربوطه را از گیتهاب نصب کردم ولی توی پوشه ی config فایل sluggable برام ایجاد نشده
به صورت دستی ایجادش کنم ؟
محتویات فایل sluggable در گیت هاب را کپی کنم مشکلی نداره ؟


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
2

از دستور زیر استفاده کن
فایل کانفیگ رو پابلیش میکنه

php artisan vendor:publish --provider="Cviebrock\EloquentSluggable\ServiceProvider"

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

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