معرفی پکیج sluggable برای لاراول

( لاراول ۵.۴ )

برای هر محتوا یا بخشی از پروژه لاراول قطعا یکی از بخش های مهم لینک همان بخش است که جنریت می شود تا لینک درست و مناسبی تولید شود، برای مثال همین مقاله ای که الان مشاهده میکنید اگر دقت کنید بین کلماتی که فاصله وجود دارد خط تیره گذاشته میشود تا لینک خواناتر و قابل فهم تر باشد.

برای مثال به جای اینکه لینک به صورت زیر باشد :

http://example.com/post/My+Dinner+With+Andr%C3%A9+%26+Fran%C3%A7ois

به صورت زیر نمایش داده می شود :

http://example.com/post/my-dinner-with-andre-francois

برای مدیریت این موضوع در لاراول پکیج های مختلفی تولید شده اند که بهترینشون تا به امروز پکیج Eloquent-Sluggable است که خیلی عالی لینک ها رو مدیریت و تولید میکنه.

برای نصب کافیه وارد مسیر پروژه بشید و به صورت زیر اقدام نمائید :

قدم اول : نصب پکیج با استفاده از کامپوزر :

 composer require cviebrock/eloquent-sluggable

قدم دوم : وارد فایل config/app.php میشیم و کد زیر را به providers اضافه میکنیم :

'providers' => [
      Cviebrock\EloquentSluggable\ServiceProvider::class     
];

قدم سوم : کد زیر را داخل ترمینال اجرا میکنیم :

php artisan vendor:publish

با اجرای این کد، فایلهایی که مورد نیاز است داخل پروژه قرار داده می شوند که مهمترینشون فایل sluggable.php داخل فولدر config است که میتوان تنظیمات slug را تغییر داد.

قدم چهارم :  وارد فایل مدل می شویم و پکیج را use میکنیم و کد زیر را بهش اضافه میکنیم :

    use Sluggable;

    /**
     * Return the sluggable configuration array for this model.
     *
     * @return array
     */
    public function sluggable()
    {
        return [
            'slug' => [
                'source' => 'title'
            ]
        ];
    }

تا به اینجای کار پکیج نصب شده و قابل استفاده ست فقط باید دقت کنیم که فیلدی که داخل دیتابیس داریم باید هم اسم فیلدی باشد که با استفاده از پکیج لینک جنریت میشود و داخل آن ذخیره می شود (slug).

اگر بخواهیم بگیم چطور قابل استفاده است با کد نمونه زیر در زمانی که پست ایجاد میشود قابل درک است :

$post = new Post([
    'title' => 'My Awesome Blog Post',
]);

$post->save();
// $post->slug is "my-awesome-blog-post"

اگر احیانا مقاله جدیدی با لینک یکی از مقالات یکی باشد اعدادی را به ترتیب به آخر لینک اضافه میکند و در واقع مقدار slug یونیک است.
$newPost = $post->replicate();
// $newPost->slug is "my-awesome-blog-post-1"

برای اینکه بخواهیم یکسری تغییرات دیگه ایجاد کنیم و یا تنظیمات بیشتری را روی پکیج اعمال کنیم توصیه میکنم لینک مربوط به پکیج را که در بالا اشاره شد مطالعه نمایید.

اگر بخواهیم لینک های دیگری ( مثلا برای نویسنده های مقالات ) تولید کنیم میتوانیم به صورت زیر کد فوق را که به مدل اضافه کردیم توسعه دهیم :

public function sluggable()
{
    return [
        'title-slug' => [
            'source' => 'title'
        ],
        'author-slug' => [
            'source' => ['author.firstname', 'author.lastname']
        ],
    ];
}

این پلاگین حروف فارسی را پشتیبانی نمیکنه برای اینکه این پشتیبانی صورت بگیره لازمه وارد فولدر config و فایل sluggable بشید و تابع زیر را برای method قرار دهید :

    '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);
    },

که خروجی و نتیجه به صورت زیر خواهد بود :

sluggable farsi

پ. ن :‌این تابع رو از وب سایت  morilog.ir برداشتم 🙂

پکیج تاریخ شمسی برای لاراول ۵

یکی از نیازهای برنامه‌نویسای ایرانی هنگام توسعه وب‌سایت‌ها و اپلیکیشن‌ها، تبدیل تاریخ میلادی و شمسی و بالعکسه… که مرتضی پروینی عزیز پکیجی رو برای این کار نوشته که در گیت هاب شخصی ایشون میتونید جزئیاتش رو ببینید و نصب و استفاده نمائید. ( همچنین در سایت packalyst میتوانید پکیج های مختلفی رو برای اینکار پیدا کنید که بازخوبترینش همین پکیجه تا به امروز. )

پ.ن : در نهایت تاکید میکنم که این مقالاتی که توی وبلاگم منتشر میکنم صرفا برای آرشیو کردن تجربیات خودم برای خودم است که در آینده نیز شاید دوباره برایم کاربرد داشته باشه اگر برای دوستان نیز کاربرد داشت که خوشحال خواهم شد.

شاد و موفق باشید.

نصب لاراول

برای نصب لاراول ابتدا بخش داکیومنتیشن لاراول را بررسی میکنیم که برای ورژنی که مایل هستیم نصب کنیم به چه نسخه ای از php  نیاز داریم، که معمولا بهتره حداقل نسخه 5.6  رو نصب داشته باشیم. البته اگر از XAMPP  استفاده میکنید دیگه نیازی نیست نگران این موضوع باشیم و از آخرین ورژن XAMPP  استفاده میکنیم.

برای نصب لاراول در راهکار پیش رو داریم

گام اول : Composer  را نصب میکنیم.

composer یک پکیج منیجر php است که با استفاده از ان میتوان پکیج های مختلف php  را استفاده کرد و با استفاده از وب سایت packagist میتوانید پکیج های مختلفی که نیاز دارید را پیدا کنید و از آنها در پروژه های خود استفاده نمائید.

برای نصب composer طبق مستندات خود وبسایت عمل خواهیم کرد. و دستور زیر را اجرا میکنیم :

php composer-setup.php --install-dir=bin --filename=composer

بعد از اینکه composer را نصب کردیم در صورتیکه در ترمینال کلمه composer را بنویسیم و Enter  بزنیم نصب شدن آن را به ما نمایش می دهد:

composer-installed-successfully

حالا که composer  را نصب کردیم با استفاده از دستور زیر به راحتی میتوانیم به مسیر مورد نظر بریم و فولدر پروژه را بسازیم و سپس پروژه لاراول را ایجاد کنیم :

composer create-project --prefer-dist laravel/laravel blog "5.3.*"

دقت کنید به جای نام blog نام فولدر پروژه ای که میخواهیم را مینویسیم.

تا به اینجای کار لاراول را نصب کردیم و میتونیم وارد فولدر پروژه پویم و فایلهای پروژه را ببینیم. اما در صورتیکه بخواهیم کار را راحتتر کنیم و نصب لاراول را آسان تر انجام دهیم.

بعد از اینکه composer را نصب کردیم با استفاده از دستور زیر آن را به صورت Global نصب میکنیم. یعنی فایل نصب شده را انتقال میدهد.

mv composer.phar /usr/local/bin/composer

در صورتیکه با نصب آن با مشکل مواجه شدید می توانید از صفحه دانلود آن ، آخرین نسخه آن را دانلود نمائید و سپس با ترمینال به مسیری که آن را دانلود کردید برید. مثلا اگر فایل دانلود شده را در دسکتاپ قرار دادید داخل ترمینال کافیه بنویسید cd/desktop  و سپس آن را به صورت Global نصب کنید به دستور زیر :

mv composer.phar /usr/local/bin/composer

در واقع دستور فوق فایل composerی که دانلود کردیم را انتقال می دهید.

اکنون که composer به صورت Global نصب شده است طبق داکیومنت لاراول دستور زیر را انجام می دهیم‌ و پکیج لاراول را نصب میکنیم :

composer global require "laravel/installer" 

طبق داکیومنت لاراول مسیر زیر را باید به مسیر PATH سیستم اضافه کنیم :

در سیستم عامل مکینتاش در قسمت ترمینال وارد روت اصلی میشویم ( با اینتر کردن cd ) و سپس با تایپ دستور ls -a  میتوانیم فایل ها موجود را مشاهده کنیم و تغییرات لازم را اعمال کنیم، تصویر زیر فایلهای موردنظر را نمایش می دهد، فایل .bash_profile فایلی است که میخواهیم ادیت را بر روی آن انجام دهیم :

file path on mac

مطابق تصویر زیر PATH File  را به آن اضافه و ذخیره میکنیم. ( خط انتخاب شده در تصویر زیر به آن اضافه شده است ).

path bash file

بعد از نوشتن PATH برای reload شدن فایل دستور زیر را مینویسیم :

source ~/.bash_profile

اکنون تنظیمات لازم اعمال شد. با تایپ دستور laravel –version نسخه ی لاراول به شما نمایش داده خواهد شد.

laravel-version

برای نصب لاراول با ترمینال به مسیر مورد نظر که میخواهیم پروژه لاراول را در آن ایجاد کنیم وارد می شویم و سپس  دستور زیر را تایپ میکنیم.

laravel new blog

در پست قبل دامنه ای مجازی به نام laracms ایجاد کردیم، وارد فولدر htdocs می شویم و دستور فوق را وارد میکنیم تا لاراول شروع به نصب کند :

نصب لاراول

در صورتیکه با موفقیت لاراول نصب شود پیغام زیر به شما نمایش داده خواهد شد.

install successfully laravel

وارد فولدر می شویم و دستور زیر را تایپ میکنیم :

php artisan serve

بعد از تایپ دستور فوق با خطای زیر مواجه می شویم :/

error 500 laravel

که لازم است سطوح دسترسی به فولدر را درست کنیم 🙂

chmod 777

و درنهایت :

php artisan serve

 

laravel

 

شاد باشید.