گام یک : نصب پکیج با استفاده از دستور زیر در ترمینال
composer require cviebrock/eloquent-sluggable
گام 2 : دستور زیر را در ترمینال وارد کنید :
php artisan vendor:publish --provider="Cviebrock\EloquentSluggable\ServiceProvider"
گام 3 : وارد پوشه config/sluggable.php شوید و مقدار method => null را با زیر جایگزین کنید
'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);},
گام 4: اضافه کردن متد زیر در مدل های مورد نظر که میخواهید از اسلاگ استفاده کنید
توجه کنید که باید use trait sluggable را انجام دهید
use Cviebrock\EloquentSluggable\Sluggable; class Post extends Model { use HasFactory , SoftDeletes, Sluggable ; protected $fillable = [ ' slug ' , ' title ', ' description ' ]; public function sluggable(): array { return [ 'slug' => [ 'source' => 'title' ] ]; } }
مقدار source برابر است با مقداری که اسلاگ بر اساس ان ساخته می شود که باید همان نام فیلد مورد نظر در دیتا بیس باشد
نویسنده : حسین غلامیان