2016年9月20日 星期二

Laravel 新手等級學習筆記(四) 加入Form

在Laravel中  表格的建制也有不同的方法

因為Laravel加了防盜連機制 會自動產生一組特殊碼來判別

若用原本HTML Form來建立

Laravel會顯示錯誤訊息

應該是可以把這個機制關閉 但.....我不會

開啟之前的helloworld的樣板檔案

 .\resources\views\ helloworld.blade.php

把<body>   </body>中間改成

{{Form::open(['url'=>'post', 'method'=>'post'])}}
{{Form::label('title', '標題')}}
{{Form::text('title')}}
{{Form::submit('送出')}}
{{Form::close()}}

執行之後 畫面會出現錯誤訊息

FatalThrowableError in................
Class 'Form' not found

因為Laravel根本沒有支援Form

所以接下來就要安裝上去


安裝 Form

進入laravelcollective.com 裡面有說明

打開命令提示字元

進入安裝目錄 我之前設定的是 c:\www\www_laravel

打上

php c:\xampp\php\composer require "laravelcollective/html":"^5.2.0"

php 是windows 版本 安裝plugin之前都要加php

c:\xampp\php\composer 因為是在不同目錄安裝 所以要打完整的路徑才能執行

後面就是照著網站上的指令打上去

輸入完按下enter會自動安裝

最後 按照網站上的指示 開啟 config/app.php

在兩個地方加上




'providers' => [
                    // ...
                       Collective\Html\HtmlServiceProvider::class,
                   // ...
],



'aliases' => [
                   // ...
                      'Form' => Collective\Html\FormFacade::class,
                      'Html' => Collective\Html\HtmlFacade::class,
                  // ...
],



完成安裝

重新整理之後 發現中文字都不見了



這是老問題  要把文件要改成UTF8編碼即可


其他樣式 和 用途  等稍待再繼續說明


2016年8月28日 星期日

Laravel 新手等級學習筆記(三) 資料庫連結

Laravel 5.2有個資料庫遷移檔的功能

好像是為了能夠版本控管 可以一指還原

還會多加一個時間戳記(可取消)

這裡就不先討論

先使用phpmyadmin 建立一個資料庫 testdbs

後面要多加一個s 後面會說明

再建立一個testtbs的資料表

按照慣例取個 id  主鍵  increments 是唯一值的遞增數字

再來個 name 資料型態︰字元

並手動新增二筆資料 已備後續程式測試用

編輯資料庫設定

如果是用xampp預設模式的話  資料庫的帳號是root  沒有密碼

所以要改一個是根目錄底下的  .env 檔案
DB_DATABASE=testdb

DB_USERNAME=root


一個是在 config/database.php

'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'testview'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'strict' => false,
            'engine' => null,
        ],


建立模組

在根目錄任何地方  建一個Models的目錄

這邊是建立在 app\底下  M最好要大寫

在app\Models 底下 建立一個Testtb.php的檔案

namespace App\Models;
use Illuminate\Database\Eloquent\Model;

class Testtb extends Model
{
protected $table = "testtbs";
}


前面兩行一定要  路徑要設對

app\Models 是之前自己設定的路徑唷!!!

檔名Testdb.php、class的名稱  都要設成一樣

Laravel會自動去抓 開頭小寫  後面加s的資料表

所以 class Testtb 就對應資料表testdbs

資料讀取

打開 app\Http\routes.php

新增另一行

Route::get('/testdata','TestbaseController@printdata');

由上得知 這邊取名方式不一定要全部一樣

養成良好習慣 程式擺放的檔案名稱記得後面加Controller

新增TestbaseController.php的檔案

打上

namespace App\Http\Controllers;
use App\Models\Testtb;

class TestbaseController extends Controller
{
     public function printdata() {
          $test = new Testtb;
          $test = Testtb::all();
          foreach ($test as $te) {
                echo $te->name;
          }
     }
}


use App\Models\Testtb;  就是剛剛建立的Models

$test = new Testtb;   新建類別

$test = Testtb::all();  讀取所有資料

foreach ($test as $te)  把資料表裡的資料 一筆一筆讀出來

echo $te->name;    列印出來

這樣就完成 資料庫連結及讀取資料






資料來源

2016年8月18日 星期四

Laravel 新手等級學習筆記(二) Hello World

編輯routes.php


Laravel 是把程式 資料庫 以及畫面分開來進行

由一個 routes.php 的檔案決定程序該送到何處進行

打開(已經有內建好了)

.\app\Http\routes.php

把原本的程式碼改成

Route::get('/', 'TestController@testview');

有三個參數

第一個  / 為網址 / 代表的是根目錄 本機跑的網址是 127.0.0.1

             若打上 /abc 網址要打上127.0.0.1/abc 就能進入該程序

              所以這個參數在往後是不能重複的一個網址就對應到一個程序

第二個  TestController 是連到哪個檔案 TestController為檔案名稱

              儲存路徑在 .\app\Http\Controllers\目錄裡面 有個TestController.php的檔案

               檔案名稱第一位需大寫 跟Controller的C 也大寫

第三個  testview就是擺放程式的function

所以這整句話的意思是

Route::get('/', 'TestController@testview');

在網址 127.0.0.1 的畫面對應到 TestController.php裡的testview裡的程式碼

編輯程式

規定好 route 後 就在.\app\Http\Controllers\ 新增TestController.php 檔案

打上

namespace App\Http\Controllers;

class TestController extends Controller
{
     public function testview() {
          return view('helloworld');
     }
}


namespace  很像是避免有重複名稱的class 所以特定指定一個路徑 去繼承

                    通常程式裡有extends 就必須設定namespace

class TestController extends Controller

這是固定寫法 TestController檔案名稱

extends Controller 繼承目錄裡的Controller.php

這裡就很清楚  比照Route::get('/', 'TestController@testview'); 的意思

注意的是

view('helloworld');

裡的helloworld不是輸出的文字  而是檔案名稱

輸出樣板

程式寫好 要把結果輸出到頁面上

Laravel是透過樣板的功能呈現頁面

而樣板檔案放置的位置就是在 .\resources\views\

在 .\resources\views\ 裡面已存在welcome.blade.php

把改名成helloworld.blade.php

 打開裡面內容  就是很熟悉的HTML

裡面有一行是

    <body>
        <div class="container">
            <div class="content">
                <div class="title">
Laravel
            </div>
        </div>
    </body>

把Laravel 改成Hello World 重新讀取首頁



helloworld 就是view('helloworld'); 的檔案名稱

後面一定要加.blade 這樣 laravel 就會把裡面的HTML呈現在網頁上



資料來源

2016年8月16日 星期二

Laravel 新手等級學習筆記(一) 安裝 for Windows 7

安裝資料來源
長島冰茶的工程筆記

下載
XAMPP PHP + Apache + MySql


我是選PHP 7.0.8 Laravel要求是PHP >= 5.5.9

下載後安裝 下一步下一步結束

安裝 Composer

Composer是安裝各種Plugin的必要元件

打開命令提示字元

進入預設XAMPP目錄

c:\xampp\php

打上

php -r "readfile('https://getcomposer.org/installer');" | php

會顯示安裝成功

composer 將被下載在 C:\xampp\php\composer.phar 並重新命名為 composer

rename composer.phar composer

測試是否安裝成功

打上

php composer

則出現以下圖片 已安裝成功


在windows的path加上c:\xampp\php\ 路徑

在往後安裝Laravel必須要設定 不然無法成功




安裝Laravel 5.2

在命令提示字元  c:\xampp\php 下

打上

php composer global require "laravel/installer"

這需要一點時間

安裝成功後  建立第一個網站

打上以下指令, c:\www\www_laravel 網站檔案放置的位置!可隨意調整

php composer create-project laravel/laravel C:\www\www_laravel --prefer-dist


這也是需要跑一段時間

最後如果出現

Application key [XXXXXXXXXXXXXXXXXXXXX] set successfully.
表示安裝成功  只差最後一步  把路徑指向剛剛設定的目錄底下

用管理者身分開啟記事本

開啟 C:\Windows\System32\drivers\etc\hosts 

加上 127.0.0.1 localhost
localhost可自訂


在 C:\xampp\apache\conf\extra\httpd-vhosts.conf 最後加上

<VirtualHost *>
     DocumentRoot "C:\www\www_laravel\public"
     ServerName laravel
     <Directory "C:\www\www_laravel\public">
          AllowOverride All
          Require all granted
     </Directory>
</VirtualHost>
     

重開apache

在瀏覽器輸入127.0.0.1

出現  表示安裝成功







資料來源