# laravel 協作筆記 (版本使用5.5.40)
## blade.php
```
php : <?php echo $x ?>
blade.php :{{$x}} //轉成html碼
{{{$x}}} //不轉換
```
## view
### 語法
view("name") ; name為該blade.php的名字
## 建立專案
在欲創新專案的底下開啟終端機輸入
:::success
laravel new ProjectName;
:::
執行Laravel專案需要先利用php開啟一個簡易Web server指令如下
:::info
預設為port 8000 可在 serve 後加上 --port XXXX 更改port
php artisan serve
進入網址為DB_Host:port
ex:http://127.0.0.1:8000/
:::
## 資料庫
### 資料庫連接
修改.env檔中的DB_PORT,DB_DATABASE,DB_PASSWORD,DB_USERNAME
:::info
在控制器php頁面需加入 use Illuminate\Support\Facades\DB;
:::
### 資料庫
新增 migration
:::info
php artisan make:migration create_users_table
:::
執行 migration
:::info
php artisan migrate
:::
生成登入註冊
:::info
php artisan make:auth
:::
在migration 使用 mysql語法
DB::unprepared('mysql 語法')
### 資料庫使用語法
DB::action('action......')
括號內做什麼action就放什麼
範例:
:::info
DB::select('select * from table');
DB:insert('insert into table (Column1,...) values (Column1,....)')
:::
## Controller
### 建立Controller
:::info
php artisan make:controller controller名稱
:::
### Controller版本問題
控制器回應get請求 laravel 6版以上遇到
:::danger
Illuminate\Contracts\Container\BindingResolutionException : Target class[] does not exist
:::
解決方法:
:::info
web.php 加入 use App\Http\Controllers\controller名稱;
Route::get('/', "controller名稱@index")
改成
Route::get('/', [controller名稱::class, 'index']
:::
## Model
### 建立Model
:::success
MODEL:php artisan make:model MODEL_NAME
:::
## with
## 註冊/加入會員/忘記密碼
php artsian make:auth;
:::success
自動生成資料表users
php artsian migrate
:::
## Route
### 語法:
Route::HTTP動詞('路徑',參數) 依路徑對應至各php,若找不到則顯示404
:::info
Route::get('/',function{
return view ("filename")
})
:::
:::warning
若在資料夾內 則filaname = foldername.filename
:::
[參考筆記](https://www.slideshare.net/shengyou/4-route)
---
## 狀況排除
### 中文unicode亂碼
```javascript=
json_decode(json_encode($week,false));
```
### 在apache2 使用 laravel 的 .htaccss
啟動 apache2 rewrite mode:q
```
sudo a2enmod rewrite
sudo systemctl restart apache2
```
### laravel bootstrap 3.3.7 => 4.5.x
https://github.com/laravelnews/laravel-twbs4
### laravel專案從github clone下來須重建專案
https://blog.goodjack.tw/2017/03/laravel-clone.html
## 表單POST
需加入{{csrf_field()}}
需要使用Request 請求
---
## 驗證碼功能Captcha
```
composer require mews/captcha
```
:::info
設定/config/app.php
'providers' => [
// 略...
Mews\Captcha\CaptchaServiceProvider::class,
]
'aliases' => [
// 略...
'Captcha' => Mews\Captcha\Facades\Captcha::class,
]
:::
產生設定檔:config/captcha.php(更改樣式用)
:::success
php artisan vendor:publish
:::
修改/resource/views/auth/login.blade.php 挑位置加入:
```php
<div class="form-group">
<label for="captcha" class="col-md-4 control-label">驗證碼</label>
<div class="form-group">
<div class="col-md-3">
<input id="captcha" class="form-control" type="captcha" name="captcha" value="{{ old('captcha') }}" required>
@if ($errors->has('captcha'))
<span class="help-block">
<strong>驗證碼輸入錯誤</strong>
</span>
@endif
</div>
<span class="col-md-1 refereshrecapcha"> //換一張圖功能
<a href="/login">{!! captcha_img('flat') !!}</a> #樣式 flat
</span>
</div>
</div>
```
```php
修改/vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php
加入:
protected function validateLogin(Request $request)
{
$this->validate($request, [
$this->username() => 'required|string',
'password' => 'required|string',
'captcha' => 'required|captcha', #新增此行
]);
}
```
對應路由web.php
:::info
Route::get('/login/refereshcapcha', 'Auth\LoginController@refereshcapcha');
:::
修改app/html.../loginController.php
加入:
:::info
public function refereshcapcha()
{
return captcha_img('flat');
}
:::
## Laravel表單 用法
```
composer require "laravelcollective/html":"^5.4.0"
```
config/app.php
:::info
'providers' => [
// 加入這行
Collective\Html\HtmlServiceProvider::class,
// ...
],
'aliases' => [
// 加入這行
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,
// ...
],
:::
### 開啟表單
{{Form::open(array('url'=>'foo/bar'))}}
{{Form::close()}}
### 下拉式選單
在open及close之間放入
## laravel安裝
安裝指定版本: composer create-project laravel/laravel=5.5.*
composer create-project laravel/laravel 檔案名稱 "5.5.*"
[安裝](https://laravel.tw/docs/5.3/installation)