Skip to content

Instantly share code, notes, and snippets.

@xemoe
Last active November 2, 2019 13:52
Show Gist options
  • Save xemoe/8827b3e3cc44034f1ebb to your computer and use it in GitHub Desktop.
Save xemoe/8827b3e3cc44034f1ebb to your computer and use it in GitHub Desktop.
Larvel 5 bootstrap guide

ติดตั้ง Laravel 5 installer

composer global require "laravel/installer=~1.1"

สร้าง Laravel 5 application

~/.composer/vendor/bin/laravel new myapp

ล้างโค้ดส่วนที่มากับตัว Framework

cd myapp
php artisan fresh

แก้ไขชื่อ Namespace จาก App => Myapp

php artisan app:name Myapp

สร้าง HelloWorld route

vim myapp/app/Http/routes.php

ลบ
Route::get('/', 'WelcomeController@index');

เพิ่ม
Route::get('/', function() {
  return ['Hello world'];
});

แก้คอนฟิก Test ให้สามารถใช้กับ Laravel 5 Framework ได้

cd myapp
codecept bootstrap

แก้ไข tests/functional.suite.yml

จาก 
enabled: [Filesystem, FunctionalHelper]
เป็น
enabled: [Laravel5, Filesystem, FunctionalHelper]

ทดสอบด้วย
cd myapp
codecept build
codecept run

ใช้งาน Frontend dev

cd myapp

แก้ไข package.json
package.json
{
  "private": true,
  "devDependencies": {
    "gulp": "^3.8.8",
    "laravel-elixir": "*"
  },
  "dependencies": {
    "gulp": "^3.8.11",
    "gulp-notify": "^2.2.0",
    "laravel-elixir": "^0.14.2",
    "notify-send": "^0.1.2"
  }
}
sudo apt-get install libnotify-bin
npm install
./node_modules/gulp/bin/gulp.js

สร้าง DB เริ่มต้นจาก setup_db.sh

/opt/www/setup_db.sh
#!/bin/bash

if ! type realpath &>/dev/null
then
    sudo apt-get update && sudo apt-get install realpath -y;
fi

SCRIPT_PATH=$(dirname $(realpath -s $0))

DB_NAME=dojo
DB_USER=admin
DB_PASS=
ACTION=${1}

function backup_db() {
    mkdir -p ${SCRIPT_PATH}/backup;
    mysqldump -u ${DB_USER} -p${DB_PASS} ${DB_NAME} > ${SCRIPT_PATH}/backup/${DB_NAME}_$(date +%Y%m%d).sql
}

function new_db() {
    mysql -u ${DB_USER} -p${DB_PASS} -e "DROP DATABASE \`${DB_NAME}\`;"
    mysql -u ${DB_USER} -p${DB_PASS} -e "CREATE DATABASE \`${DB_NAME}\` CHARACTER SET utf8 COLLATE utf8_general_ci;"
}

case ${ACTION} in
    "backup")
        if mysql -u ${DB_USER} -p${DB_PASS} -e "show databases" | grep ${DB_NAME} &>/dev/null
        then
            echo "Database: ${DB_NAME} exists";
            backup_db
        fi
        ;;
    "new")
        new_db
        ;;
esac
cd myapp
แก้ไขไฟล์ .env
แก้ไขไฟล์ setup_db.sh 

ใช้งาน
/opt/www/setup_db.sh new เพื่อสร้างฐานข้อมูลใหม่

เพิ่ม Bower components

/opt/www/.bowerrc
{
  "directory": "vendor/bower_components"
}
/opt/www/bower.json
{
  "name": "laravel 5",
  "version": "0.0.0",
  "authors": [
    "srandev"
  ],
  "license": "MIT",
  "dependencies": {
    "bootstrap-sass-official": "~3.3.4",
    "font-awesome": "~4.3.0"
  }
}
/opt/www/gulpfile.js
var elixir = require('laravel-elixir');
 
var paths = {
	'jquery': 'vendor/bower_components/jquery',
	'bootstrap': 'vendor/bower_components/bootstrap-sass-official/assets',
    'fontawesome': 'vendor/bower_components/font-awesome'
}
 
var includes = { 
    includePaths: [
        paths.bootstrap + '/stylesheets',
        paths.fontawesome + '/scss'
    ] 
};

var scripts = [
    paths.jquery + "/dist/jquery.js",
    paths.bootstrap + "/javascripts/bootstrap.js"
];

elixir(function(mix) {
    mix.sass("app.scss", 'public/css/', includes)
    .copy(paths.bootstrap + '/fonts/bootstrap/**', 'public/fonts')
    .scripts(scripts, 'public/js/app.js', './');
});
/opt/www/resources/assets/sass/app.scss
@import "bootstrap";

อัพเดท Bower components

bower install
./node_modules/gulp/bin/gulp.js

สร้าง Authentication Cest

cd /opt/www
codecept generate:cest functional Authentication

เพิ่ม Test

public function guestCanAccessLoginPage(FunctionalTester $I)
{
  $loginroute = '/auth/login';
  $I->amOnPage($loginroute);
  $I->dontSeeAuthentication();
  $I->seeResponseCodeIs(200);
  $I->see('Login');
}
ทดสอบ codecept
codecept run
เพิ่ม route
Route::get('/auth/login', function() {
    return ['Login'];
});

เพิ่ม Composer dependency

composer require "illuminate/html:5.0.*@dev"

เพิ่มตาราง Migration

php artisan migrate:install
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment