سلام من 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);
},
@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 هم یادتون نره
این مورد رو تست کنید، خبرش رو هم لطفا اعلام کنید
توی هلپرفانکشن هاتون اینو اضافه کنید
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',
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟