2019-06-03 / JSN / 0 Comments / 47 views
從 php7.1 開始支援使用陣列 [] ( 基本上 [] 在 php 7 已經可以取代 list() )可以指定特別的鍵,例如:
|
$data = ['a' => 'A', 'b' => 'B']; ['a' => $first, 'b' => $second] = $data; echo $first; // A echo $second; // B |
上面的意思也就是,將陣列 $data 中的 a 放到變數 $first。
在 7.1 之前只能使用數字 key 來取得另外一個對應的陣列,如
|
$data = ['A', 'B']; [$first, $second] = $data; echo $first; // A echo $second; // B |
如果這樣的話會報錯
|
$data = ['a' => 'A', 'a' => 'B']; [$first, $second] = $data; // ErrorException : Undefined offset: 0 |
2019-04-30 / JSN / 0 Comments / 39 views
前往
app\Http\Middleware\VerifyCsrfToken.php ,添加要取消的 URIs,例如
|
protected $except = [ '/payment/callback', ]; |
這在由其他網站要 POST 到我們網址的時候,會非常須要。
2019-04-01 / JSN / 0 Comments / 276 views
HTML5 有一個元素叫做 <template>,在使用 jQuery 取得內容並複製成為模板,除了使用 clone() 之外,記得搭配 outerHTML 使用。以下範例
詳細程式碼如下
|
<h1>訂單</h1> <table class="orders" border="1"> </table> <template class="item"> <tr> <th class="id"></th> <td class="title"></td> </tr> </template> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
// 取得模板,透過取得 HTML 以後複製一份 var getTemplate = function (){ var html = $("template.item").html(); return $(html).clone(); } // 假設這是 AJAX 取得的資料 var ajaxData = function (){ return [{ id: 1, title: '蔬菜' }, { id: 2, title: '水果' }] } $(function (){ // 開始 var data = ajaxData() var temp = getTemplate() // 準備一個用來組合的 html 編碼的變數 var mix = ''; // 批次組合 $.each(data, function (key, ele){ temp.find(".id").text(ele.id) temp.find(".title").text(ele.title) // 必須要使用 outerHTML 才能取得根節點 <tr> mix += temp[0].outerHTML }) // 迴圈結合後再一次寫入 html 可以減少效能負擔 $("table.orders").html(mix) }) |
2019-03-25 / JSN / 0 Comments / 62 views
預設的時候通常使用相對路徑,可是會很不容易管理,例如
|
import '../compoments/tabs' import '../../template/helloWorld' |
這時我們只要在 webpack.config.js 使用模塊的解析方式 “resolve” 來設定別名,就能在 import 的時候簡寫來能省去計算相對位置的麻煩,例如
|
module.exports = { //... resolve: { alias: { '@compoments': path.resolve(__dirname, 'assets/src/javascript/compoments'), '@template': path.resolve(__dirname, 'assets/src/javascript/template'), '@scss': path.resolve(__dirname, 'assets/src/scss'), } } } |
修改成
|
import '@compoments/tabs' import '@template/helloWorld' import '@scss/app.scss' |
當然開頭的 @ 是我習慣自訂用來區別純單字的符號,你也可以不要使用,更多方法可以參考官網說明。
參考官方網站
2019-03-04 / JSN / 0 Comments / 281 views
安裝套件
|
composer require melihovv/base64-image-decoder |
使用範例
透過套件解碼後自訂檔案名稱,配合使用 Storage::put 就可以將圖檔存放到 storage\app 底下。
|
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Str; use Melihovv\Base64ImageDecoder\Base64ImageDecoder; try { $dataUri = 'data:image/gif;base64,R0lGODlhLAH6AOZ/AMyokXJMK0uE...'; $decoder = new Base64ImageDecoder($dataUri, ['jpeg', 'jpg', 'png', 'gif']); $fileName = strtoupper(Str::uuid()) . "." . $decoder->getFormat(); Storage::put($fileName, $decoder->getDecodedContent()); } catch (\Exception $e) { dd($e->getMessage()); } |