
這學期教產業學院,捨去了CodeIgniter框架,而改用Laravel。也因為想找一本適合學生的課本,找了目前繁體/簡體書~但仍沒有好的教材。幸好最近看到了 Laravel Up&Running 這本書,就直接買下電子版苦讀一番,這週開始就開始以這本書為藍圖來做教學。希望能讓台灣的PHP教學環境更進步 🙂
分類: 程式設計
wwDBGrid遇到顯示(MEMO)的處理方式
這件事情的起因是因為前人開立的欄位格式是 nvarchar(max)
於是呢!在DBGrid裡面就變成了
要解決(Memo)顯示正常的內容,就得要在DBGrid的DrawDataCell動手腳了
procedure TForm1.wwDBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState); var ACanvas : TCanvas; begin if (Field.DataType <> ftWidememo) then exit; ACanvas := twwDBGrid(Sender).Canvas; ACanvas.textrect(Rect,Rect.Left,Rect.Top,Field.AsString); end;
加上後,就會顯示為
【本文同步於CodeData】PHP Laravel 開發入門(四) – 路由(Routes)
任何一個網站框架最基本的功能就是透過http(s)取得客戶端的需求後並且回覆相關資訊,這意味著在學習框架中首要的是定義路由,如果沒有路由也就無法完成與客戶端互動。
在本章我們將瞭解Laravel的框架以及如何定義路由,並且熟悉如何使用Laravel的路由工具去處理各種路由的需求。
在Laravel的框架中,你可以透過 routes/web.php 定義 web相關的 routes,並透過 routes/api.php 定義 api相關的 routes。也就是說你可以將api與web做區隔建立對應的route。(如果是 5.3之前的版本,routes則存在 app/Http/routes.php中。)在這邊我們主要討論的是 web.php為主。
基本路由
在web.php中有一個為根目錄(‘/’)且附帶閉包函數的預設路由。這個路由預設是使用者造訪根目錄時,就會回傳 welcome.blade.php 的內容。
|
1
2
3
|
Route::get('/', function () {return view('welcome');}); |
除此之外,我們也可以不透過echo或print回傳字串。例如:
|
1
2
3
|
Route::get('/', function () {return 'Hello World!';}); |
假設我們要設定一個回傳about的路由,可以透過
|
1
2
3
|
Route::get('about', function () {return 'this is about!';}); |
或顯示 resource/views/about.blade.php
|
1
2
3
|
Route::get('about', function () {return view('about');}); |
路由動詞
在HTTP通訊協定中制定了幾種動詞(Verbs)與伺服器溝通,在上一節中我們使用GET用來讀取資料。那其他PUT、POST、DELETE該如何定義?
|
1
2
3
4
5
|
Route::post('/', function () {});Route::put('/', function () {});Route::delete('/', function () {}); |
如果要符合所有通詞,則使用any
|
1
|
Route::any('/', function () {}); |
另外,要符合部分動詞,則使用match
|
1
|
Route::match(['get', 'post'], '/', function () {}); |
如果要路由至特定的控制器(Controller),下面的例子會對應到 app/Http/Controllers/WelcomeController.php的index函數
|
1
|
Route::get('/', 'WelcomeController@index'); |
路由參數
如果你的路由需要傳遞參數的話,,該如何傳遞呢?
|
1
2
3
|
Route::get('users/{id}', function ($id) {//}); |
如果傳遞的參數要有預設值的話,
|
1
2
3
|
Route::get('users/{id}', function ($id='123') {//}); |
另外,參數也可以透過正規式讓裡頭的函數只能接收相 對應的值。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
// id只能輸入 0-9Route::get('users/{id}', function ($id) {//})->where('id', '[0-9]+');// username只能輸入大小寫的英文字母Route::get('users/{username}', function ($username) {//})->where('username', '[A-Za-z]+');// id只能輸入數字;slug只能輸入英文字母Route::get('posts/{id}/{slug}', function ($id, $slug) {Route Definitions | 27//})->where(['id' => '[0-9]+', 'slug' => '[A-Za-z]+']); |
路由命名
在url Helper可以透過 url()去轉向,而在laravel框架中更允許你對每個路由做命名。
例如我們要顯示某一位會員的資料,可以先將會員資料做處理,
|
1
2
3
4
|
// 定義members/ID為members.showRoute::get('members/{id}', 'MembersController@show')->name('members.show');// 在View<a href="<?php echo route('members.show', ['id' => 14]); ?>"> |
路由群組
在Laravel裡有一個好用的路由群組,舉例來說,我有一個api相關的群組,一開始的定義可能如下:
|
1
2
3
4
5
6
|
Route::get('/api', function () {});Route::get('/api/users', function () {}); |
我們透過路由群組可以簡化成
|
1
2
3
4
5
6
7
8
|
Route::group(['prefix' => 'api'], function () {Route::get('/', function () {});Route::get('users', function () {});}); |
子網域路由
在網址裡,可能會有不同的子網域,我們也可以透過子網域的路由來完成
|
1
2
3
4
5
|
Route::group(['domain' => 'admin.codedata.com.tw'], function () {Route::get('/', function () {//});}); |
同樣的,也可以透過參數帶入不同的子網域
|
1
2
3
4
5
6
7
|
Route::group(['domain' => '{account}.codedata.com.tw'], function () {Route::get('/', function ($account) {//});Route::get('article/{id}', function ($account, $id) {//}); |
這樣大家對路由有沒有基本的瞭解了呢?下一次我們來解說Controller(控制器)。
Laravel 作者相關影音
關於Laravel正確的念法
Laravel的念法到底是什麼呢?好像眾說紛云~
不過找到Laravel開發者Taylor Otwell 老婆Abigail Otwell 的官方說法了
「The name Laravel (Lar-a-vel, not Lauravel
) was made up by Taylor, a spinoff of Cair Paravel in Narnia. I get asked about the name a lot
」
PhpStorm 2016.3版本釋出了!
PhpStorm是目前PHP開發工具中最強也最完整的一套,11/24推出2016.3的正式版本了!
- 工具和框架:在遠程解釋程序中支持 Docker、支持 PHPSpec 測試框架、自動檢測和配置 PHPUnit、Behat 和 composer.json 內的 PHPSpec、在一個框架中打開多個項目,以及支持 Codeigniter 代碼風格。
- 新的編輯體驗:語意突顯變量和參數、無需函數和 var 關鍵字即可完成重載方法和屬性,以及改進對 PSR-0/PSR-4 的支持。
- 代碼質量分析:項目範圍的 PHP 7 嚴格類型、新的命名約定檢查,並改進運行時錯誤預防。
該版本還對頂尖 web 技術的支持進行了重大改進,如:支持流(flow)、改進對 TypeScript 的支持、支持 PostCSS、Stylelint 等。
原始連結: https://blog.jetbrains.com/phpstorm/2016/11/phpstorm-2016-3-is-now-released/
下載: https://www.jetbrains.com/phpstorm/download/#section=windows-version
Laragon – Turns your computer into a powerful server
A lightweight, fast and convenient modern LAMP Server with Redis and Memcached, extremely high performance. Laragon’ll turn your computer into a powerful server
Laravel教學學習文章
Laravel是最近很夯的PHP framework。因為有在教學Laravel開發~所以順道將這部份用文字記錄分享
PHP Laravel 開發入門(一) – 環境建置
PHP Laravel 開發入門(二) – 設置與目錄架構
Xampp設定給Composer/Xdebug/SQL Server
https://github.com/superlevin/xamppforlaravel
因為個人及教學上的需求,自己整理了一個base on XAMPP 5.6.24的版本。
然後調整php.ini設定,並加上Xdebug(為了給PHPStorm除錯),還有PHP for SQL Server的整合可以連上MS SQL.
放在Github給大家用,解壓縮到d:就可以了
Laravel 回傳 json的亂碼解決方式
在Laravel中我們要產出json格式的話,一般只要
[php]
Route::get(‘json’, function () {
$users = DB::table(‘users’)->get();
return Response::json($users);
}
[/php]
但是遇到中文時,會出現有亂碼的問題,解決很簡單
[php]
Route::get(‘json’, function () {
$headers = array(‘Content-Type’ => ‘application/json; charset=utf-8’);
$users = DB::table(‘users’)->get();
return Response::json($users, 200, $headers, JSON_UNESCAPED_UNICODE);
});
[/php]


