php – Laravel – 操作 Request 的 header 與 body

當使用者發送請求到 Laravel 後,我們可能會在 middleware 中介層要擴增 header 參數或 body 參數,可以這麼用

Header

取得參數

擴增參數

移除參數

 

Body

取得參數

擴增參數

移除參數

 

 

ubuntu 18 – 使用 Docker 建立 php+Laravel+Nginx+MySQL+phpMyAdmin

Ubuntu 18

這篇記錄主要在 ubuntu 底下,使用 Laradock 快速建立 Laravel + Nginx + MySQL 。

安裝基本工具

如果執行上述出現

那就執行以下這三段後再重新試試

安裝 Docker

將自己的帳號加到 docker 這個群組,可避免之後運行 “docker-compose” 要打上 “sudo docker-compose…”

若要生效似乎要重啟系統。

建立專案路徑

例如取名 laravel-test

取得 Laradock

將 APP_CODE_PATH_HOST 指定我們的專案路徑,不可使用 ~/projects/laravel-test

啟用需要的服務

進入 Workspace 容器

這時候容器內的 /var/www/ 就會對應到容器外的 ~/projects/laravel-test/,我們安裝 laravel

更新 laravel 的 storage 寫入權限

改資料庫設定

打開瀏覽器輸入 http://localhost 就能看到 Laravel 啟用視窗了。若要修改 Laradock 當前的預設設定是

(選用)建立站台

若要建立多個站台,可複製使用 laradock 已經提供的模板,例如我要建立一個 laravel.test

修改如

讓網址輸入 http://laravel.test 會指向 127.0.0.1

重新啟動 Laradock

注意要使用 stop 和 start。因為 docker-compose down 會卸載容器;docker-compose up 會重新建立容器,設定會一切重投

MySQL

參考,預設使用最後一版,目前是 MySQL 8.0,預設帳密都是 root,這可以在 Laradock 中的 .env 搜尋 “MYSQL_ROOT_PASSWORD” 找到

我們先離開,修改密碼驗證的模式

因為是採用 Docker 映像檔,若進入 mysql 要使用 docker-compose 指令

然後修改密碼,我們使用 root 登入 mysql,修改 Laradock 預設時新增的使用者叫做 default 的密碼

前往 http://localhost:8080 進入 phpmyadmin,Server 輸入 mysql,Username 與 Password 輸入剛剛修改後的:default/a_A@123456。

phpMyAdmin

參考,我偏好 MySQL 8 所以啟用

打開 http://localhost:8080 就可進入。若要改 port ,可以到 Laradock 的 .env 修改 PMA_PORT=8080

 

參考

Laravel – 將錯誤寫入 Log 的時候,連帶網址與輸入參數的方法

假如我們想把錯誤寫入 log 的話,要觀察網址或傳遞的參數,我們可以添加方法 context() 來取代繼承 vendor\laravel\framework\src\Illuminate\Foundation\Exceptions\Handler.php。

app\Exceptions\Handler.php

url, input 是我們自訂的,這樣在查看 log 的時候就能看到參數囉。參考

PHP – 在 PHP 中使用 Gmail SMTP 無法驗證的方法

我使用框架如 Laravel 需要使用 SMTP 並驗證 Google 帳號密碼,但是因為帳號啟用了 2 次驗證,所以我們的 Google 密碼並不可以使用。通常SMTP會這樣設定

Laravel 通常會出現如「Failed to authenticate on SMTP server with username “xxx@gmail.com” using 3 possible authenticators. Authenticator LOGIN returned Swift_TransportException」。

為了解決問題,我們先到 這裡 應該會看到 Google 顯示「注意:由於您的帳戶使用兩步驟驗證,您必須建立應用程式專用密碼,才能使用應用程式登入。

 

我們選擇 建立應用程式專用密碼 ,如何產生應用程式密碼中可以看到「前往您的應用程式密碼」,登入我們的 Google 帳號。

 

接著在「應用程式密碼」頁面中,新增我們的裝置,例如點擊其他,然後按下產生

 

會生出一組16個字元的密碼,回到我們SMTP設定,把原先使用 Google 密碼的部分替換為這組亂數密碼,就能完成發信囉!

 

 

 

php – Joomla – 使用 JToolbarHelper::link() 替代 JToolbarHelper::addNew() 的技巧

通常我們在元件主頁面會顯示列表,而列表上方都會有「新增」的按鈕,因為這顆按鈕的運作原理是 Submit Form,設定上很麻煩因為還要開 <input> 指定參數,網址才會更著轉換。通常我們會這樣跳轉網頁

 

但我覺得這個方式更直覺,使用 URL 就好了真的。

會要用到 JS ,主要是因為 JToolbarHelper::link() 在設定為 ‘new’ 的時候,並不會真的模擬成 JToolbarHelper::addNew() 樣式,不過只要添加與 addNew() 相同的 class 即可解決這個問題囉。