با سلام خدمت همه دوستان از پکیج sluggable استفاده میکنم در لاراول 5.7 و برای کارکتر های فارسی هم از کدی که آقای حسام موسوی دادن
'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);
},
اما وقتی که از php artisan استفاده میکنم برای کارهای مثل optimize با خطا روبرو میشم
LogicException : Your configuration files are not serializable.
at PATH\vendor\laravel\framework\src\Illuminate\Foundation\Console\ConfigCacheCommand.php:۶۸
۶۴| require $configPath;
۶۵| } catch (Throwable $e) {
۶۶| $this->files->delete($configPath);
۶۷|
> ۶۸| throw new LogicException('Your configuration files are not serializable.', ۰, $e);
۶۹| }
۷۰|
۷۱| $this->info('Configuration cached successfully!');
۷۲| }
Exception trace:
۱ Error::("Call to undefined method Closure::__set_state()")
PATH\bootstrap\cache\config.php:۷۰۹
۲ require()
PATH\vendor\laravel\framework\src\Illuminate\Foundation\Console\ConfigCacheCommand.php:۶۴
Please use the argument -v to see more details.
وقتی کد داخل method رو بر می دارم مشکلی نیست. و درست کار میکنه
راه حل دیگه ای برای کارکتر های فارسی در پکیج sluggable هستش؟
پکیج هایی برای این کار هست که UTF-8 رو ساپورت میکنه.
composer require rny/slugutf8
امتحان کنید.
سلام @ali.bayat و تشکر
شما خودتون استفاده کردی از این پکیج ؟
من کل پروژه از sluggable استفاده کردم و دنبال راه حل واسه این میگردم.
من نصب کردم مشکلی نداشت.
استفاده ازش هم بسیار سادست:
use Rny\SlugUtf8\SlugUtf8;
$Title = 'مشکل کارکتر های فارسی';
$options = array(
'delimiter' => '-',
'limit' => null,
'lowercase' => true,
'replacements' => array(),
'transliterate' => false,
'strip_non_utf8' => false,
);
$Slug = SlugUtf8::SlugUtf8($Title, $options);
// مشکل-کارکتر-های-فارسی
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟