文章

目前顯示的是 七月, 2015的文章

用單一 Middleware 進行所有 Model 的資料驗證

Laravel 5 的 Form Request 很好用,不過對於每一個 Model 都要建立一個 Form Request 也有點小麻煩,下面這篇文章的作法值得參考,原則上就是把驗證規則寫在 Model Class,建立一個 Middleware,接受 Model Class Name 為參數,在 handle() 執行 input 驗證,在套用 Middleware 時將 Model Class Name 傳入即可。

LARAVEL 5.1.X – MIDDLEWARE FOR INPUT VALIDATION

這一篇用 Middleware 做 ACL 也不錯:

LARAVEL – 5.1.X ACL USING MIDDLEWARE

Laravel 5.1 自訂忘記密碼之信件主旨

忘記密碼即重設密碼是由 Auth/PasswordController.php 處理,其中使用了 ResetsPasswords trait,查看 vendor/laravel/framework/src/Illuminate/Foundation/Auth/ResetsPasswords.php,其中:

protected function getEmailSubject(){return isset($this->subject) ? $this->subject : 'Your Password Reset Link';}

看到 $this->subject 了沒....

所以要自訂忘記密碼之信件主旨,只要在
app/Http/ControllersAuth/PasswordController.php 中:


use ResetsPasswords;protected $redirectTo = '/';protected $subject = '重設密碼';

另外重設密碼之後預設會將 user 登入並轉向至 /home,要更改就如上面所示,設定 $redirectTo 即可。

ps. $redirectPath 也可以,且優先於 $redirectTo


如果考慮多國語系,則可以參考這一個討論串

[ 工具 ] 往下捲隱藏導覽列,往上捲顯示:Bootstrap Auto-Hiding Navbar

網頁超過一頁的長度時,往下捲動一定距離後自動隱藏導覽列,往上捲動時顯示導覽列。

Bootstrap Auto-Hiding Navbar 可以很方便的作到。

官網Github

官網上的說明很詳細,要注意 jquery css selector 要依據實際的情況設定

無窮分類選單列表 in Laravel ver. 2

程式碼範例第二版

第一版的差別:

在Model中定義關聯(1對多,自己關聯自己,只需要 多 的部份即可)Controller中只取第一層分類View中遞迴引入相同模板,在模板中處理子分類

Laravel 中實現無窮分類列表

圖片
無窮分類列表中,每一個分類可能有子分類,也可能有上層分類,階層深度理論上可以無限分層,如果要將所有階層的分類像目錄結構一般一次列出,在 laravel 中該怎麼做?



傳統 PHP 的寫法可以參考 tad 的這一篇文章,基本上就是運用遞迴函數,從最上層一層一層抓出來,然後組合出 html 碼。

Laravel 因為是 MVC 架構,所以資料和畫面要分開處理。(程式碼範例

資料部份在 controller 中取得,同樣是利用遞迴方式,每個節點都是一個包含2個元素的陣列:

[ 工具 ] wow.js + animate.css

wow.js + animate.css 真是像我這種一點藝術天份也沒有的苦手救星啊~~~~

教學:

http://tt5.org/tag/animate-css/

[ 筆記 ] PHP 之 ArrayAccess interface

官網文件

用途:把物件當陣列操作
須實作的方法,以陣列方式操作物件實會自動呼叫相對應的方法: offsetExists 依據 key 是否有值,回傳 boolean
offsetGet 依據 key 取值
offsetSet 依據 key 賦值,無回傳值
offsetUnset 依據 key 取消(unset)其值,無回傳值

Laravel 分頁變更頁碼參數名稱

Laravel 的分頁很方便,不過如果要將預設頁碼參數由page更改為其他名稱要怎麼做?

官網的使用手冊好像沒有提到,於是從 api 文件挖了出來....

http://laravel.com/api/5.1/Illuminate/Database/Eloquent/Builder.html#method_paginate

paginate 有 3 個參數,意義如下:

參數1:分頁筆數,預設每頁 15 筆

參數2:Model 取出之欄位,為一個陣列,預設為全部 ['*']

參數3:頁碼參數名稱,預設為 'page'


example:

$posts = \App\Post::paginate(10, null, 'p');

代表一頁 10 筆,取出所有欄位,頁碼參數為 p

Laravel seeder for foreign key

當資料表設定連外鍵時,seed 時要特別注意,否則會失敗喔。 

解法: https://gist.github.com/isimmons/8202227

加入:
// 開始前先關閉外鍵限制
DB::statement('SET FOREIGN_KEY_CHECKS=0;');

// 最後再打開外鍵限制
DB::statement('SET FOREIGN_KEY_CHECKS=1;');

Laravel 中依環境註冊 service provider / facade

有些 Service Provider / Facade 只有在開發時才用的到,上線時不需用到,如果不想手動處理,那就讓程式自動判斷吧。

app/Providers/AppServiceProvider.php

register function 中處理:

See the Pen bdvjpd by t301000 (@t301000) on CodePen.

[ 工具 ] 假文 / 假名 產生器

假文產生器

Lorem ipsum ==> for english,還有其他國家的語言

亂數假文產生器

MoreText ==> 有js檔,可在開發時加入class即可使用,也有bookmarklet可用

假名產生器:

中文姓名產生器

夢幻筆名產生器


[ 好文收集 ] CSS 的 !important 意義

原來事實和我想的不一樣啊....

是更重要的意思

CSS 的 !important 意義

[好文收集]Token-Based Authentication for AngularJS and Laravel Apps

之前為了在Laravel 和 AngularJS中使用JWT花了不少時間研究,下面兩篇文章把整個實作交代得很清楚,值得一看。

Token-Based Authentication for AngularJS and Laravel Apps

Token-Based Authentication for AngularJS and Laravel Apps (Part 2)