ต้องการสร้างเว็บรองรับหลายๆ บริษัท โดยที่ใช้ code ชุดเดียวกันและให้ฝ่ายที่ดูแลสามารถเพิ่มข้อมูลและเว็บไซต์ ได้เองโดยที่ไม่ต้องใช้ความรู้ทางด้านการเขียนโปรแกรมเลย
เจอ package ชื่อ delatbabel/site-config แต่เพราะว่าเค้ารองรับแค่ laravel 5.1 เลยต้องสร้าง project ใหม่ตั้งแต่ต้นเลย
- พิมพ์ command
installation 1=5.1 1composer create-project laravel/laravel sites "5.1.*"
- แก้ config ในไฟล์ .env ให้ติดต่อ databse ได้
.env 1234567...
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_DATABASE=sites
DB_USERNAME=root
DB_PASSWORD=xxx
...
- เพิ่ม package ในไฟล์ composer.json
composer.json 12345678...
"require"
: {
"php"
:
">=5.5.9"
,
"laravel/framework"
:
"5.1.*"
,
...
"delatbabel/site-config"
:
"~1.0"
},
...
- run command
command 1composer update
- เปิดไฟล์ config\app.php เพิ่ม
configpp.php 12345678910111213...
'providers'
=> [
...
Delatbabel\SiteConfig\SiteConfigServiceProvider::
class
,
...
],
...
'aliases'
=> [
'SiteConfigSaver'
=> Delatbabel\SiteConfig\Facades\SiteConfigSaver::
class
,
],
...
- เพิ่ม Boostrap the Config Loader ใน 2 ไฟล์ คือ \app\Console\Kernel.php และ \app\Http\Kernel.php ต้องครบ 2 ไฟล์นะครับ ผมใส่ไม่ครบงงอยู่นานมากทำไม่มันมันใช้ไม่ได้
\app\Http\Kernel.php 1234567891011...
protected
function
bootstrappers()
{
$bootstrappers
= parent::bootstrappers();
// Add the SiteConfig bootstrapper to the end.
$bootstrappers
[] =
'Delatbabel\SiteConfig\Bootstrap\LoadConfiguration'
;
return
$bootstrappers
;
}
...
- Incorporate and Run the Migrations โดย run command
command 12php artisan vendor:publish --tag=migrations --force
php artisan migrate
การติดตั้งเสร็จแล้ว ที่นี้จะทดลองใช้งาน
- สร้างไฟล์ \app\Http\Controllers\HomeController.php
\app\Http\Controllers\HomeController.php 1234567891011121314151617181920212223<?php
namespace
App\Http\Controllers;
use
App\User;
use
App\Http\Controllers\Controller;
class
HomeController
extends
Controller {
/**
* Show the profile for the given user.
*/
public
function
index()
{
return
'title = '
.config(
'config.title'
);
$config
= config()->all();
return
'<pre>'
. print_r(
$config
,true).
'</pre>'
;
}
}
- เพิ่ม route ในไฟล์ \app\Http\routes.php
123
...
Route::get(
'/'
,
'HomeController@index'
);
...
- ทดลอง set domain ขึ้นมาเทส เปิดไฟล์ C:\Windows\System32\drivers\etc\hosts
host 1234...
127.0.0.1 phunsanit.com
127.0.0.1 pitt.com
...
- เพิ่มข้อมูลทกสอบโดยใช้
sql 1234567891011INSERT
INTO
`configs` (`id`, `website_id`, `environment`, `
group
`, `
key
`, `value`, `type`, `created_at`, `updated_at`)
VALUES
(1, 1,
NULL
,
'config'
,
'title'
,
'localhost'
,
''
,
'0000-00-00 00:00:00'
,
'0000-00-00 00:00:00'
),
(2, 1,
'prod'
,
'config'
,
'title'
,
'localhost ON production'
,
''
,
'0000-00-00 00:00:00'
,
'0000-00-00 00:00:00'
),
(3, 1,
'test'
,
'config'
,
'title'
,
'localhost IN TEST SERVER'
,
''
,
'0000-00-00 00:00:00'
,
'0000-00-00 00:00:00'
),
(4, 2,
NULL
,
'config'
,
'title'
,
'pitt.com'
,
''
,
'0000-00-00 00:00:00'
,
'0000-00-00 00:00:00'
),
(5, 2,
'prod'
,
'config'
,
'title'
,
'pitt.com ON production'
,
''
,
'0000-00-00 00:00:00'
,
'0000-00-00 00:00:00'
),
(6, 2,
'test'
,
'config'
,
'title'
,
'pitt.com IN TEST SERVER'
,
''
,
'0000-00-00 00:00:00'
,
'0000-00-00 00:00:00'
);
INSERT
INTO
`websites` (`id`, `
name
`, `http_host`, `environment`, `created_by`, `updated_by`, `created_at`, `updated_at`, `deleted_at`)
VALUES
(1,
'prototype'
,
'localhost'
,
'test'
,
NULL
,
NULL
,
'0000-00-00 00:00:00'
,
'0000-00-00 00:00:00'
,
NULL
),
(2,
'prototype'
,
'pitt.com'
,
'test'
,
NULL
,
NULL
,
'0000-00-00 00:00:00'
,
'0000-00-00 00:00:00'
,
NULL
);
- ทดสอบโดยเปิด http://localhost/mcms/public/ และ http://pitt.com/mcms/public/
นำไปดัดแปลงให้เหมาะกับงานที่ทำครับ