Controller
生成
-
使用Artisan
-
e.g.
php artisan make:controller UserAuthController
結果: 產生 app/Http/Controllers/UserAuthController.php 控制器檔案
namespace
-
用途: 標示本檔案放在什麼資料夾
-
寫法: 用右斜線分開
-
e.g.:
<?php namespace App\Http\Controllers;
-
ps. 注意大小寫
- 在PhpStorm裡會自動區分大小寫,但EC2不會
方法 (function)
寫法: public function(){}
- e.g.:
<?php class UserAuthController extends controller { public function signUpPage(){ $binding = [ 'title' => '註冊' ]; return view('auth.signUp', $binding); } }
- PS. array的寫法:
"中框號" + "key=>value"
- PSS. 若要回傳什麼的話就用
return
- PSSS.
view('auth.signUp', $binding)
的意思是要去找resourses/views/auth
資料夾裡的signUp.blade.php
檔
常用工具
- 接受輸入資料
$input = request()->all;
- 驗證
-
建立驗證規則
<?php $rules = [ 'nickname' => [ 'required', 'max:50', ], 'email' => [ 'required', 'email', 'max:50' ], 'password' => [ 'required', 'same:password_confirmation' ], 'type' => [ 'required', 'in:G,A', ], ];
- PS. 各個rules 內在指定時要用
''
給包起來 - PSS. 和指定項相同:
same:xxx
;'in:G,A'
必須是G或A - More: https://laravel.tw/docs/5.2/validation#available-validation-rules
- PS. 各個rules 內在指定時要用
-
驗證資料
$validator = Validator::make($input, $rules);
- 使用靜態方法呼叫Validator (前題: 需在上面 use Validator;)
- 存成物件存在$Validator
<?php if($validator->fails()){ return redirect('user/auth/sign-up') ->withErrors($validator) ->withInput(); }
- 取出驗證失敗的方法:
If($validator->fails())
- 把失敗資料帶著傳回去return redirect的目的地址
withErrors($validator)
withInput()
- 在 blade 顯示 error message
- 在 route 裡認到’user/auth/sign-up’後就會轉到 signUp.blade,並帶著 $errors 過去
<?php @if($errors) <ul> @foreach($errors->all() as $err) <li>{{ $err }}</li> @endforeach </ul>
- 用
all
的方法來把$errors
裡面的資料取出來 - 取出來之後才能再用
foreach
來把一筆一筆印出 - 以上語法可以存在
components
資料夾內,並命名為validationErrorMessage.blade - 在主 blade 內就可以用
@include('components.validationErrorMessage')
把它引起來用
-
View
@extends: 繼承指定模版
- e.g.
extends('layout.master
)
@section: 傳值
- 兩種用法
- @section(要傳的片段, 要傳的內容)
- e.g.
@section('title',$title)
- e.g.
- @section, @endsection: 指定要傳的片段,接著再把要傳的內容包在其中
- e.g.
<?php @section('content') // What you want to express abc @endsection
- e.g.
- @section(要傳的片段, 要傳的內容)
直接引用其他模版
- @include(‘components.validationErrorMessage’)
*