Tag: laravel
-
VS Code 啟用 Emmet 對 Blade 模版的支援
數個月前拜讀了 為什麼我從 Sublime Text 跳槽 Visual Studio Code? 後,我也試著將日常的開發工作改用 vscode 進行,剛開始還蠻不習慣的,總是同時開著 sublime text 和 vscode,輪著操作。 隨著 vscode 快速迭代,效能與功能進步神速,sublime text 也就越來越少使用了。 最近又有了在 Laravel 底下寫 HTML 的需求。 用 blade 編寫畫面本身不是什麼困難的事。但是 emmet 在寫 blade 時沒作用還蠻困擾的,一直敲 < /> 令人心煩。 好在家,vscode 1.15 後終於可以啟用 Emmet for Blade,只要在 Setting 加上以下兩組設定即可啟用 “emmet.includeLanguages”: { “blade”: “html” }, “emmet.triggerExpansionOnTab”: true,
-
Laravel 4.x WhoopsDisplayer::display() must be an instance of Exception
有個用 Laravel 4.2 開發的舊專案,近來經常遇到下面這個錯誤 PHP Fatal error: Uncaught TypeError: Argument 1 passed to Illuminate\Exception\WhoopsDisplayer::display() must be an instance of Exception, instance of ParseError given 找了許多討論都提到是 Laravel 4.x 與 PHP 7 不相容的關係。但我的開發環境有 PHP 5.6 和 PHP 7,似乎前者也有機會發生,十分不解。 每當發生這個 Error 就不會看到真正的 Exception 訊息,debug 十分困擾。 Stackoverflow 上找到一個應急用的解法,可以用在開發環境上…. 在 app/config/local/app.php 的檔案開頭加兩行 set_error_handler(null); set_exception_handler(null); 暫時搞定了…
-
將 Sequel Pro 的表導出成 Laravel migration 文件
在 Laravel 學院看到一篇有趣的文,筆記下。 将 Sequel Pro 中已存在的数据表导出为 Laravel 迁移文件 對於用 Mac 的開發者來說頗為實用。Sequel Pro 這款 MySQL GUI 也是我用過最好用、最順手的 DB 管理工具,沒有之一,輕巧高效,可惜支援的 DB 種類不多。
-
Connection could not be established with host
最近重灌了工作用的筆電,把開發環境的 PHP 升級到 5.6.10,然後就各種狀況….. 其中一個問題是從本機連不上公司 mail server,所以寄信功能就掛掉了。Laravel log 的訊息如下 local.ERROR: 500 – Connection could not be established with host xxx.com.tw [ #0] @ / exception ‘Swift_TransportException’ with message ‘Connection could not be established with host xxx.com.tw [ #0]’ in laravel/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php:270 原來是因為從 PHP 5.6 開始,變更了 SSL 認證的預設值,verify_peer 與 verify_peer_name 這兩項安全檢查都被改為預設,然後很多 SSL verification 就過不了。雖然提高安全性是好事,但開發環境卻造成一些困擾。 以上述的 swiftmailer 套件為例,它的…
-
Laravel: failed to open stream: Too many open files
公司的 Team 開發的產品也越來越龐大了,API 的部份依賴 Laravel 內建整合的 PHPUnit 來進行自動化測試。 這回從 git repo 上拉了新的 code 後,照慣例跑一下 phpunit,然後就掛了… PHP Warning: failed to open stream: Too many open files 好像沒見過這樣的訊息。Google 一下才知道是踩到了 Mac OS 檔案開啟上限的地雷。 $ ulimit -a # 這個指令可以看系統限制 core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited file size (blocks, -f) unlimited max locked memory (kbytes,…
-
Laravel 4 Async Queue Driver
在 Github 上找到一個有趣又實用的 Laravel 4 套件:Laravel 4 Async Queue Driver。 Laravel 4 有支援 Queue,但是對小型或是開發中的專案來說,特地去弄一套 Queue Worker 並不是很便利,但是用 Sync Mode 又很浪費時間,因為 Sync Mode 真的要等系統把排程跑完才會繼續執行之後的程式碼…. 這時候 Async Driver 就派上用場了。這組 driver 會用子執行緒的方式在背景跑 Queue,雖然是立即執行式 (fire instantly),跟 “Queue” 的理念不太一樣,但已足以應付許多需求。 ps. 圖片與本文無關
-
Laravel Eloquent – Encrypt/Decrypt Data on call
在開發商業網站的時候,對資料加密是必要的手段,尤其是資料庫中關於會員隱私,或是商業機密的部份都要特別處理。 在實務上通常不會用資料庫內建的加密功能,而是用後端語言來實現 encrypt 與 decrypt,資料庫只儲存加密後的訊息。 在 Laravel 裡加解密可以透過繼承 Eloquent,用 magic function 來達成自動化。 class BaseModel extends Eloquent { protected $encrypt = []; public function setAttribute($key, $value) { if (in_array($key, $this->encrypt)) { $value = Crypt::encrypt($value); } return parent::setAttribute($key, $value); } public function getAttribute($key) { if (in_array($key, $this->encrypt)) { return Crypt::decrypt($this->attributes[$key]); } return parent::getAttribute($key); } public function attributesToArray()…
-
Output Laravel 4 View as String
覺得 Laravel 這套框架真的有很多眉眉角角的。 這回遇到的是要將 View::make() 的結果當成文字回傳,但 View::make() 回傳的內容似乎是包含 http header 的,無法直接存成純文字。 網路上找到兩種解法,都是官方文件裡沒提到的用法….. #$%^&* $html = (string) View::make(‘foo’, [‘bar’ => ‘baz’]); $html = View::make(‘foo’, [‘bar’ => ‘baz’])->render(); 兩者的差異是前者會遮蔽 Exception,而後者不會。
-
Change the hostname in Mac OS X
近期的開發工作是在 Laravel Framework 下進行的,這個 framework 會依系統的 Hostname 來切換環境,在 local 與 production 之間切換,就可以連到不同資料庫之類的設計,這個設計好不好沒什麼感覺,畢竟主要是在 local 下開發。 這個 Hostname 神秘的地方是會因為網路而有差異,這兩天部門的網路有所更動,Hostname 就不一樣,Laravel 碰到不認得的 Hostname 會自動切換回 production,然後就一堆設定掛在那邊 XD Laravel 的 Hostname 識別可以在 /%laravel_root%/bootstrap/start.php 下設定,但改來改去也挺麻煩的。 Mac OS X 修改 Hostname 並不是難事,雖然我並不確定改下去會不會有什麼後遺症… 在 Terminal 下輸入 sudo scutil –set HostName john-macbook-air.local 然後輸入密碼就改完了,不必重開機。
-
Issue with Laravel Rules & Regex (OR) operator
換了新工作後才開始接觸 Laravel 這套 PHP framework,學習的過程碰到不少問題,跟之前慣用的 CodeIgniter 相比,Laravel 引了很多新觀念。 這天在使用 Laravel 內建的 Validation 作表單檢查的時候,發現 regex 規則怎麼寫都不會過….. (怒 規則如下: <?php $rule = array( ‘mode’ => ‘required|regex:/^(typeA|typeB)$/’ ); 執行時會一直收到如下的錯誤訊息… ErrorException preg_match(): No ending delimiter ‘\/’ found 苦惱了十分鐘後才在文件上看到這段話… Note: When using the regex pattern, it may be necessary to specify rules in an array instead of using pipe delimiters,…