Showing results for “laravel”

12 results found

  • Laravel Migration Foreign key constraint is incorrectly formed

    Topic
    Save Pongsiri 4 months ago

    When creating a new table in Laravel. A migration will be generated like:$table->bigIncrements('id');Instead of (in older Laravel versions):$table->increments('id');When using bigIncrements the foreign key expects a bigInteger instead of an integer. So your code will look like this:public function up() { Schema::create('meals', function (Blueprint $table) { $table->increments('id'); $table->unsignedBigInteger('user_id'); //changed this line $table->unsignedBigInteger('category_id'); //changed this line $table->string('title'); $table->string('body'); $table->string('meal_av'); $table->timestamps(); $table->foreign('user_id') ->references('id') ->on('users') ->onDelete('cascade'); $table->foreign('category_id') ->references('id') ->on('categories') ->onDelete('cascade'); }); } You could also use increments instead of bigIncrements like Kiko Sejio said.The difference between Integer and BigInteger is the size:int => 32-bitbigint => 64-bithttps://stackoverflow.com/questions/32669880/laravel-migration-foreign-key-constraint-is-incorrectly-formed

  • ตั้งค่าใช้งาน docker กับ laravel ด้วย laradock

    Article
    Save Pongsiri 4 months ago

    สำหรับผู้เริ่มต้นใช้งาน docker ที่ต้องการตั้งค่า laravel ให้สามารถรันได้กับ docker ทำได้ง่าย ๆ โดยใช้ laradock ที่ถูกสร้างมาเพื่อการนี้โดยเฉพาะเลย ซึ่งผมได้สร้างโปรเจค laravel และตั้งค่าใช้งาน laradock ไว้แล้วที่ https://github.com/savepong/laravel-docker สามารถ git clone เอาพัฒนาต่อได้เลยครับ ส่วนถ้าใครอยากทำเองตั้งแต่ต้นก็ทำตามบรรทัดด้านล่างนี้ได้เลยครับก่อนเริ่มต้นให้ดูทรัพยากรใช้เครื่องของเราด้วยว่าได้รัน service พวก apache, nginx, mysql ผ่าน port ปกติ เช่น 8080, 3306 ไว้รึเปล่า ถ้าถูกใช้ port ที่ว่าไว้อยู่แล้ว แนะนำว่าใช้ stop service พวกนี้ไปก่อน จะได้ไม่ชนกับ port ที่เรากำลังจะรันจาก docker ครับ หรือไม่ก็ตั้งค่าให้ docker ไปรัน service ที่ port อื่นแทนครับติดตั้ง Laradockสร้าง laravel โปรเจคlaravel new my-project clone laradock มาไว้ใน directory ของโปรเจคgit clone https://github.com/Laradock/laradock.git เข้าไปยัง directory ที่ชื่อว่า laradock จากนั้น ทำการคัดลอก env-example แล้วเปลี่ยนชื่อเป็น .envcd laradock cp env-example .env ตั้งค่า .env จากค่าเริ่มต้นของ laradockDB_CONNECTION=mysql DB_HOST=mariadb #IP ของ host ถ้าเราใช้ mysql container ก็ใส่ mysql แทน DB_PORT=3306 DB_DATABASE=defaul DB_USERNAME=root DB_PASSWORD=root ใช้งาน Laradockสร้าง container จากไฟล์ docker-compose.ymldocker-compose up -d nginx mariadb workspace ถ้าขึ้น success ก็เปิด http://localhost ดูผลลัพธ์ได้เลยตั้งค่าเพิ่มเติมssh ไปยัง docker container ที่ชื่อว่า workspacedocker-compose exec --user laradock workspace bash ติดตั้งแพคเกจต่างเพิ่มของ Laravel ด้วยคำสั่งcomposer install php artisan key:generate php artisan migrate หากเราต้องการเชคสถานะสามารถทำได้โดยdocker ps Referral linkslaradock.ioสร้าง-laravel-environments-บน-docker-ง่ายๆด้วย-laradock-7c5abf362538

  • สร้าง Helpers เองใน Laravel

    Article
    Save Pongsiri 9 months ago

    อย่างที่รู้กันว่า Laravel มี helpers เริ่มต้นมาให้เราใช้กันอยู่แล้ว (ดูคู่มีได้ที่ https://laravel.com/docs/5.7/helpers)แต่บางโปรเจคเราอาจต้องสร้าง helper ขึ้นมาเอง เพื่อใช้งานกับเฉพาะบางอย่างกับโปรเจคนั้นๆ โดยแนะนำให้สร้างไฟล์ .php ไว้ที่โฟลเดอร์ app เราอาจจะตั้งชื่อไฟล์ว่า app/helpers.php ก็ได้นะจากนั้นก็ตั้งค่าให้ Laravel โหลดไฟล์นี้ก่อนทำอย่างอื่น โดยการเปิดไฟล์ composer.json แล้วหาในส่วนของ autoload จะเห็นหน้าตาประมาณนี้... "autoload": { "classmap": [ "database/seeds", "database/factories" ], "psr-4": { "App\\": "app/" } }, ...เราจะทำงานเพิ่มชื่อไฟล์ที่เราพึ่งสร้างเข้าไป... "autoload": { "files": [ "app/helpers.php" ], "classmap": [ "database/seeds", "database/factories" ], "psr-4": { "App\\": "app/" } }, ...แล้วก็ dump composer ใหม่ด้วยครับcomposer dump-autoloadตอนนี้ก็ถือว่าไฟล์ Helpers ได้ถูกต้อง autoload ไว้แล้ว เรามาก็ลองสร้าง function ไว้ที่ไฟล์ app/Helpers.php ของเรากัน ตัวอย่างด้านบนเป็น function ไว้เช็คชื่อ Route ที่กำลังเปิดอยู่ เพื่อที่เราจะเอาไปใช้ใส่ class ของ css เวลาที่จะทำให้ลิงค์นั้นมัน active (ดูว่า URL ที่กำลังเปิดอยู่มีชื่อ Route ว่า ... จริงมั้ย? ถ้าใช่ให้ return คำว่า "active" ออกมา)เอาไปใช้ที่ไฟล์ blade ได้เลยนี่เป็นตัวอย่าง helper นึงนะครับ เราสามารถสร้าง helper เองกันได้เลยโดยเพิ่ม function ไว้ที่ไฟล์ app/helpers.php นั่นแหละ (เขียนเช็คสักหน่อยว่ามีฟังก์ชั่นนี้หรือยังด้วยนะ) ที่นี่เราก็มี helpers ของตัวเองสำหรับโปรเจคของเรากันแล้ว

  • วิธีรัน Laravel บนแชร์โฮส แบบไม่ต้อง /public

    Topic
    Save Pongsiri 10 months ago

    เมื่อเราต้องอัปโปรเจค Laravel ของเราขึ้นไปโฮสที่เป็นแชร์โฮสที่มีโฟลเดอร์ public_html มาให้เราอัพเว็บได้อย่างเดียว สิ่งที่เราต้องทำคือ ถ้าเราสามารถอัปไฟล์นอกโฟลเดอร์ public_html ได้ เราก็อัปขึ้นไปที่โฟลเดอร์นอก public_html แล้วเปลี่ยนชื่อโฟลเดอร์ public ใน laravel เป็น public_html แทนก็ได้ แต่ถ้าเราไม่มีสิทธิ์อัปไฟล์นอกโฟลเดอร์ public_html แล้วละก็ ให้ใช้วิธีนี้เป็นวิธีสุดท้าย (เพราะความปลอดภัยมันน้อยกว่า)1. ย้ายทุกอย่างจากโฟลเดอร์ /public ออกมาอยู่ในโฟลเดอร์โปรเจค 2. เปิดไฟล์ index.php ขึ้นมา แล้วแก้ไขตามนี้require __DIR__.'/bootstrap/autoload.php';$app = require_once DIR.'/../bootstrap/app.php';

  • วิธีเซ็ต .htaccess เมื่ออัพ laravel ขึ้น cPanel

    Topic
    Save Pongsiri 1 year ago

    cPanel ใช้ apache เป็นเว็บเซิร์ฟเวอร์อยู่แล้วดังนั้นแก้ไขไฟล์ .htaccessRewriteEngine OnOptions +FollowSymLinksRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^ index.php [L]RewriteRule ^(.*)$ public/$1 [L]

  • Laravel วิธีตั้งค่าให้เป็น https เมื่ออยู่บน production

    Topic
    Save Pongsiri 1 year ago

    <?phpnamespace App\Providers; ...use Illuminate\Support\Facades\Schema;... class AppServiceProvider extends ServiceProvider{    /**     * Bootstrap any application services.     *     * @return void     */    public function boot()    {        ...    }    /**     * Register any application services.     *     * @return void     */    public function register()    {         if (config('app.env') == 'production') {            $this->app['url']->forceScheme('https');        }    }}

  • วิธีเพิ่มคำสั่ง laravel ใน terminal

    Topic
    Save Pongsiri 1 year ago

    1. เปิด terminal แล้วรันคำสั่งแก้ไขไฟล์ .bash_profilenano ~/.bash_profile2. แล้วเพิ่มบรรทัดนี้ลงไปexport PATH="~/.composer/vendor/bin:$PATH"3. กด control + x และพิมพ์ y เพื่อบันทึก4. ปิดและเปิด Terminal ใหม่ ก็จะให้คำสั่ง laravel ได้แล้วครับlaravel new yourprojectname

  • วิธีรัน serve ของ laravel ให้เครื่องอื่นเปิดดูได้

    Topic
    Save Pongsiri 1 year ago

    sudo php artisan serve --host 192.168.1.101 --port 80

  • วิธีแก้ปัญหา paginator หน้าอื่นๆ ไม่เป็น https ใน laravel

    Article
    Save Pongsiri 1 year ago

    กรณีนี้เกิดจาก forceSchema('https') ที่เราตั้งค่าไว้เพื่อให้เปลี่ยนทุกอย่างเป็น https มันไม่ส่งผลกับ url ใน paginator เมื่อมันมีพวก X-FORWARDED อยู่นะสิ ดังนั้นทางแก้ของเราก็คือสร้าง middleware ขึ้นมาสำหรับตั้งค่าเชื่อถือ Proxy ของเราครับตั้งชื่อไฟล์ app/Http/Middleware/HttpsProtocol.phpแล้วก็ไปบอก Kernel.php ให้รู้จักกันซะ ที่ไฟล์ app/Http/Kernel.php

  • ดึง RSS ฟีดมาแสดงใน Laravel

    Article
    Save Pongsiri 1 year ago

    ใครที่ใช้ Laravel 5 และกำลังหาวิธีดึง RSS ฟีดมาแสดงที่เว็บของเรา  วันนี้ผมขอแนะนำแพคเกจ willvincent/feeds ที่ช่วยให้คุณตอบสนองความต้องการนั้นครับติดตั้ง willvincent/feedsใช้คำสั่ง composer require ดาวน์โหลดแพจเกจ willvincent/feeds ลงในโปรเจค Laravel 5 ของเราก่อนครับ composer require willvincent/feedsแล้วก็เข้าไปเพิ่ม provider ในไฟล์ config/app.php     'providers' => [        // ...        willvincent\Feeds\FeedsServiceProvider::class,    ],และเพิ่ม faces ลงในส่วนของ aliases ในไฟล์เดียวกัน    'aliases' => [        // ...        'Feeds'    => willvincent\Feeds\Facades\FeedsFacade::class,    ],ก่อนใช้งานเราก็ต้องดึง config ของแพคเกจออกมาก่อนครับphp artisan vendor:publish --provider="willvincent\Feeds\FeedsServiceProvider"เสร็จแล้วจะไฟล์ config/feeds.php กำเนิดเกิดขึ้น (ถ้าใครไม่ขึ้นหรือรันไม่ผ่านให้ลองรันคำสั่งล้างแคชก่อนนะ php artisan config:cache)การใช้งานใน Controllerเราจะใช้งานด้วยฟังก์ชั่น make()  ซึ่ง 3 พารามิเตอร์- ลิงค์ของ RSS ถ้ามีหลายลิงค์ให้ใส่เป็น array- ตัวเลขจำนวนฟีดที่แสดงไม่เกินกี่ฟีด- บังคับอ่านไฟล์ที่ไม่ถูกรูปแบบ RSS ใส่เป็น Booleanเริ่มด้วยกันเรียกใช้งานคลาสด้วย faces ที่เราเตรียมไว้ส่วนบนๆ ของ controller เราเลยครับ ... use Feeds; class FeedsController extends Controller{     ... }    โค้ดตัวอย่างนี้ เราจะเขียน method สำหรับอ่านข้อมูลจากลิงค์ RSS มาแปลงเป็น array แล้วส่งต่อไปแสดงผลที่ View ครับ    public function news()    {        $feed = Feeds::make('https://www.thaiware.com/rss/rss_latestPost_news.php');        $data = array(          'title'     => $feed->get_title(),          'permalink' => $feed->get_permalink(),          'items'     => $feed->get_items(),        );        return view('feeds', $data);    }ในส่วนของ views/feeds.blade.php เราจะลูป Feeds จาก controller มาแสดงครับ  <h1><a href="{{ $permalink }}">{{ $title }}</a></h1>  @foreach ($items as $item)    <div class="item">       <img alt="Image" src="{{ $item->get_enclosure()->link }}">           <h2><a href="{{ $item->get_permalink() }}">{{ $item->get_title() }}</a></h2>      <p>{{ $item->get_description() }}</p>      <p><small>Posted on {{ $item->get_date('j F Y | g:i a') }}</small></p>    </div>  @endforeachปล. สามารถดูตัวอย่างผลลัพธ์ของโค้ดด้านบนได้เลยที่หน้า RSS ฟีดของไอเดียจิตอลครับ https://www.ideagital.com/news 

  • การติดตั้ง Laratrust ตัวจัดการเรื่องสิทธิ์การใช้งาน (ACL)

    Article
    Save Pongsiri 1 year ago

    Laratrust เป็นแพคเกจสำหรับ Laravel 5 ที่ช่วยให้เราจัดการเรื่องสิทธิ์การใช้งานแบบ ACL โดยเราสามารถกำหนด Role, Permission และ Team เพื่อจัดการการเข้าถึงได้อย่างยืดหยุ่น ติดตั้ง Laratrust Package1. รันคำสั่ง composer require ในโปรเจค Laravel ของเรา ด้วย Terminalcomposer require "santigarcor/laratrust:5.0.*"(สำหรับใครที่ใช้ Laravel 5.5 ขึ้นไป ข้ามไปข้อ 4 ได้เลยครับ)2. เข้าไปเพิ่ม LaratrustServiceProvider ที่อาเรย์ providers ในไฟล์ config/app.phpLaratrust\LaratrustServiceProvider::class,3. และเพิ่ม Laratrust ที่อาเรย์ aliases ด้านล่างของไฟล์ด้วยนะ 'Laratrust'   => Laratrust\LaratrustFacade::class,           4. รันคำสั่งเปิดใช้ไฟล์ config ของ laratrust ทั้งหมดครับphp artisan vendor:publish --tag="laratrust"(ถ้าหากรันคำสั่งด้านบนแล้วไม่มีอะไรตอบสนอง ให้เคลียแคช config ของเราก่อนครับ)php artisan config:clearตั้งค่าในไฟล์ Configตอนนี้เราจะได้ไฟล์ config/laratrust.php สำหรับตั้งค่าต่าง ๆ ของ laratrust ดังนี้ถ้าต้องการสร้างสิทธิ์ผู้ใช้แบบทีมก็ให้เปิดใช้ฟีเจอร์นี้ตรงบรรทัดนี้use_teams => trueปกติ Laratrust จะเซ็ตโมเดล User เป็นโมเดลหลักอันเดียว กรณีมีหลาย User โมเดลก็เพิ่มอาเรย์เป็นชื่อโมเดลต่อลงไปได้เลย'user_models' => [    'users' => 'App\User',     ...],ตอนเรียกใช้ก็เรียก method ตาม key ที่เราตั้งแบบนี้$role->users;$role->users();ติดตั้งแบบอัตโนมัติ (แนะนำ)เมื่อ Config เสร็จแล้ว ต่อจากนี้ก็จะเป็นขึ้นการของติดตั้งเข้าโปรเจคของเรา ถ้าต้องการให้ Laratrust ทำการติดตั้งตัวเองอัตโนมัติ ก็แค่รันคำสั่งนี้ครับphp artisan laratrust:setupคำสั่งนี้ก็จะ Generate ไฟล์ model และ migration มาให้ครับ (ถ้าเปิดใช้ฟีเจอร์ทีมก็จะมีโมเดล Team มาให้ด้วย) และอย่าลืม dump-autoload ใหม่ด้วยนะcomposer dump-autoloadสร้าง Migrationโดยใช้คำสั่งสร้าง migration ของ laratrust ตามนี้ครับphp artisan laratrust:migrationจะได้ไฟล์ ชื่อ แล้วเราก็รันคำสั่ง migrate ได้เลยphp artisan migrateเสร็จแล้วเราจะได้ตารางในฐานข้อมูลเพิ่มขึ้นตามนี้- roles                           ไว้เก็บชื่อ role เช่น admin, user- permissions                ไว้เก็บชื่อ permission- teams                         ไว้เก็บชื่อ team (ถ้าต้ังค่า use_teams = true)- role_user                    ไว้ความสัมพันธ์ของตาราง roles และ users- permission_role          ไว้เก็บความสัมพันธ์ Many to Many ของ roles กับ permissions- permission_user         ไว้เก็บความสัมพันธ์ของตาราง users กับ permissionsสร้างโมเดล Roleตอนนี้เราก็จะไล่สร้าง Model ที่เราจำเป็นต้องไว้ครับเริ่มจากสร้างไฟล์โมเดลใหม่ในโฟลเดอร์ app ตั้งชื่อว่า app/Role.php แล้วเขียนโค้ดตามนี้namespace  App;use Laratrust\Models\LaratrustRole; class Role extends LaratrustRole{ }สำหรับโมเดล Role จะมีแอททริบิวต์หลักมาให้ 3 แอททริบิวต์- name                ชื่อที่ใช้เรียก Role แบบไม่ซ้ำกัน เช่น "admin", "owner", "employee"- display_name   ชื่อ Role แบบแสดงให้คนอ่าน เช่น User "Administrator", "Employee"- description        รายละเอียดของแต่ละ Role (ค่าเริ่มต้นเป็น null)สร้างโมเดล Permissionในโฟลเดอร์ app ให้สร้างไฟล์อีกไฟล์นึงชื่อ Permission.php แล้วเขียนโค้ดตามนี้namespace App;use Laratrust\Models\LaratrustPermission; class Permission extends LaratrustPermission{ }สำหรับโมเดล Permission จะมีแอททริบิวต์หลักมาให้ 3 แอททริบิวต์ เช่นกัน- name                ชื่อที่ใช้เรียก Permission แบบไม่ซ้ำกัน เช่น "create-post"- display_name   ชื่อ Permission แบบแสดงให้คนอ่าน เช่น User "Create Posts"- description        รายละเอียดของแต่ละ Permission (ค่าเริ่มต้นเป็น null)สร้างโมเดล Team (ถ้าเปิดใช้งาน)ในโฟลเดอร์ app ให้สร้างไฟล์ชื่อ Team.php แล้วเขียนโค้ดตามนี้namespace App;use Laratrust\Models\LaratrustTeam; class Team extends LaratrustTeam{ }สำหรับโมเดล Team จะมีแอททริบิวต์หลักมาให้ 3 แอททริบิวต์- name                ชื่อที่ใช้เรียก Team แบบไม่ซ้ำกัน เช่น "my-team"- display_name   ชื่อ Team แบบแสดงให้คนอ่าน เช่น User "My Team"- description        รายละเอียดของแต่ละ Team (ค่าเริ่มต้นเป็น null)ตั้งค่าในโมเดล Userตรงนี้เราจะมีโมเดล User อยู่แล้ว ให้เราเข้าไปเพิ่ม LaratrustUserTrait ในไฟล์ app/User.php ตามตัวอย่างนี้use Laratrust\Traits\LaratrustUserTrait; class User extends Model{   use LaratrustUserTrait; // เรียกใช้ trait   ...}เราก็จะสามารถใช้ความสัมพันธ์ของ Role และ Permission ด้วย method เหล่านี้ roles(), hasRole($name), hasPermission($permission), isAbleTo($permission), can($permission), ability($roles, $permissions, $options) และ rolesTeams()ที่สำคัญอย่าลืม dump autoload ใหม่ด้วยcomposer dump-autoloadสร้าง Seederมาถึงนี้เราก็มีโครงสร้างพร้อมใช้งานแล้วแหละ แต่ขาดข้อมูลเริ่มต้นชื่อ Role, Permission ที่เราจะมีไว้ใช้ก่อนนั่นเอง โดยการรันคำสั่งสร้าง seeder ของ laratrust php artisan laratrust:seederและเช่นเคยcomposer dump-autoloadเสร็จแล้วก็ไปเพิ่มคำสั่งสำหรับรัน method ในไฟล์ database/seeds/DatabaseSeeder.php$this->call(LaratrustSeeder::class);(** ถ้าเราไม่ได้รันคำสั่ง php artisan vendor:publish --tag="laratrust" ตั้งแต่แรก เราต้องจัดการ roles, modules และ permissions เองแต่ละอันครับ)ตอนนี้ในไฟล์ config/laratrust_seeder.php จะมีหน้าแบบนี้return [    'role_structure' => [        'superadministrator' => [            'users' => 'c,r,u,d',            'acl' => 'c,r,u,d',            'profile' => 'r,u'        ],        'administrator' => [            'users' => 'c,r,u,d',            'profile' => 'r,u'        ],        'user' => [             'profile' => 'r,u'        ],    ],    'permission_structure' => [        'cru_user' => [            'profile' => 'c,r,u'        ],    ],    ...];ทำความเข้าใจกับ role_structure ในอาเรย์ด้านบนนี้- ชั้นบนสุดคือชื่อ Role- ชั้นรองลงมาคือโมดูลสำหรับใช้งานแต่ละส่วน- ในแต่ละโมดูลจะมีการระบุชื่อ permission ที่อนุญาตแบบย่อสั้น ๆส่วนใน permission_structure คือ- ชั้นบนสุดคือชื่อ users- ชั้นรองลงมาคือโมดูลสำหรับใช้งานแต่ละส่วน- ในแต่ละโมดูลจะมีการระบุชื่อ permission ที่อนุญาตแบบย่อสั้น ๆถ้าต้องการใช้คำย่ออื่นที่ไม่ใช่ c, r, u, d ตามที่มีมาให้ ก็ให้เข้าไปปรับเองที่ config/laratrust_seeder.php ตรงอาเรย์ permission_map ครับติดตั้งตัวจัดการ Team (ถ้าเปิดใช้)1. ตั้งค่า use_teams เป็น true ในไฟล์ config/laratrust.php2. รันคำสั่งติดตั้งphp artisan laratrust:setup-teams3. รัน migratephp artisan migrateสำหรับใครอ่านที่ถึงตรงนี้แล้ว ยินดีด้วยครับการติดตั้ง Laratrust ของคุณเสร็จเรียบร้อยแล้ว เย้ๆๆ แต่นี่เป็นแค่ครึ่งทางเท่านั้น เพราะอีกครึ่งทางที่เหลือคือการใช้งาน Laratrust ซึ่งมี method ให้ใช้ได้หลายอย่างมาก รวมทั้งตัวอย่างการใช้งานในกรณีต่างๆ อีกเพียบดังนั้นจึงขอแยกเป็นเรื่อง ๆ เพื่อให้ง่ายในการกลับมาดูอีกครั้งนึง และบล็อคนี้ได้ไม่ยาวเกินไปด้วยแหละ เอาหล่ะไปพักสายตาแปป แล้วเจอกันนะครับ :)

  • เขียนเว็บให้รองรับ URL ภาษาไทย

    Article
    Save Pongsiri 1 year ago

    เราก็รู้กันอยู่แล้วว่า URL ที่ Friendly และมี Keyword อยู่ด้วยจะทำให้โอกาสติด SEO นั้นมีมากขึ้น และเรื่องความสวยงามสบายตาด้วยเช่นกันดังนั้นบทความนี้ขอตัวอย่างสั้น ๆ ตอนทำ URL ภาษาไทย มาให้ดูครับโค้ดด้านล่างนี้เป็น method นึงที่ผมสร้างขึ้นมาเพื่อแปลง Title ของโพสที่อ่านอยู่นี้ให้เป็น Slug คือตัดอักขระที่จะทำให้ลิงค์พังออก เช่น ? & # : / \ + - = ! ... พวกนี้ทำให้ URL ของเราไม่สามารถเปิดได้ ก็เลยต้องการฟังก์ชั่น preg_replace() และ str_replace ในการค้นหาอักขระเหล่านั้นและแปลงมันเป็นตัวที่ความหมายเดียวกันใช้แทนกันได้ซะ เช่น & เป็น -and- แบบนี้ อักขระอื่นก็ใช้ Regular Expressions มาด้วยหาครับ     function convertToSlug($string)    {        return preg_replace('/[^A-Za-z0-9ก-๙\-]/u', '-',str_replace('&', '-and-', $string));    }ผลลัพธ์คือสมมติว่า Title คือ "วิธีการทำ Login with Facebook และ Social อื่น ๆ ด้วย Laravel Socialite" จะถูกแปลงเป็น"วิธีการทำ-login-with-facebook-และ-social-อื่น-ๆ-ด้วย-laravel-socialite" แบบนี้ส่วนถ้าใครอยากให้แปลงชื่อหัวข้อเป็น Slug ทันทีเลยที่พิมพ์เสร็จก็เขียน JavaScript ฟังก์ชั่นขึ้นมาครับ        $('#title').on('blur', function(){            var theTitle = this.value.toLowerCase().trim(),                slugInput = $('#slug'),                theSlug = theTitle.replace(/&/g, '-and-')                                    .replace(/[^a-z0-9ก-๙-]+/g, '-')                                    .replace(/\-\-+/g, '-')                                    .replace(/^-+|-+$/g, '');                                slugInput.val(theSlug);        }); ผลลัพธ์ก็จะเหมือนแบบใน Wordpress เลย และรองรับอักขระภาษาไทยด้วยเช่น ' ้ ๊ ๋ หวังว่าจะได้ประโยชน์จากการใช้งานและประยุกต์ใช้กันนะครับ