#輕松學會Laravel-表單篇
###Controller之Request
StudentController.php
```
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use App\Student;
class StudentController extends Controller
{
public function index(Request $request){
// 取值
echo $request->input('name', '默認值');
}
}
```


StudentController.php
```
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use App\Student;
class StudentController extends Controller
{
public function index(Request $request){
// 取值
if($request->has('name')){
echo $request->input('name');
}else{
echo '參數不存在';
}
}
}
```


StudentController.php
```
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use App\Student;
class StudentController extends Controller
{
public function index(Request $request){
// 判斷請求類型
echo $request->method();
echo '<br />';
if($request->isMethod('GET')){
echo 'Yes';
}else{
echo 'No';
}
echo '<br />';
// 判斷是否是Ajax請求
if($request->ajax()){
echo 'Yes';
}else{
echo 'No';
}
echo '<br />';
// 判斷請求的url是否符合特定的格式
if($request->is('student')){
echo 'Yes';
}else{
echo 'No';
}
echo '<br />';
if($request->is('student/*')){
echo 'Yes';
}else{
echo 'No';
}
echo '<br />';
// 獲取當前的url
echo $request->url();
}
}
```

###Controller之Session
`config/session.php` session配置文件
app/Http/Kernel.php

routes.php
```
Route::group(['middleware' => ['web']], function () {
Route::get('student', [
'uses' => 'StudentController@index',
'as' => 'student'
]);
});
```
StudentController.php
```
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Student;
use Session;
class StudentController extends Controller
{
public function index(Request $request){
// HTTP request session()
$request->session()->put('name', 'zhangsan');
echo $request->session()->get('name');
echo '<br />';
// session()
session()->put('email', 'zhulinjie_cool@126.com');
echo session()->get('email');
echo '<br />';
// Session
Session::put('address', 'beijing');
echo Session::get('address');
echo '<br />';
// 不存在取默認值
echo Session::get('location', 'beijing chaoyang');
echo '<br />';
// 以數組的形式存儲數據
Session::put(['key1'=>'value1']);
echo Session::get('key1', 'default');
// 把數據存放到Session的數組中
Session::push('arr1', 'value1');
Session::push('arr1', 'value2');
$res = Session::get('arr1');
echo '<pre>';
print_r($res);
echo '<br />';
// 取出數據并刪除
Session::put('key2', 'value2');
echo Session::pull('key2', 'default');
echo '<br />';
echo Session::pull('key2', 'default');
// 獲取session所有的數據
// $res = Session::all();
// echo '<pre>';
// print_r($res);
echo '<br />';
// 判斷session中某個key是否存在
if(Session::has('key1')){
echo 'Yes';
}else{
echo 'No';
}
echo '<br />';
// 暫存數據
Session::flash('key3', 'value3');
echo Session::get('key3');
echo '<br />';
// 刪除session中指定的key的值
// Session::forget('key1');
// 清空所有session信息
Session::flush();
}
}
```

###Controller之Response
routes.php
```
Route::group(['middleware' => ['web']], function () {
Route::get('student', ['uses' => 'StudentController@index', 'as' => 'student']);
Route::get('response', ['uses' => 'StudentController@response', 'as' => 'response']);
});
```
StudentController.php
```
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Student;
use Session;
class StudentController extends Controller
{
public function index(Request $request){
// 響應的常見類型 1、字符串 2、視圖 3、Json 4、重定向
// 響應json
// $data = [
// 'errCode' => 0,
// 'errMsg' => 'success',
// 'data' => 'zhangsan'
// ];
// return response()->json($data);
// 重定向 with原理同session()->flash()
// return redirect('response')->with('message', '我是快閃數據');
// return redirect()->action('StudentController@response')->with('message', '我是快閃數據');
return redirect()->route('response')->with('message', '我是快閃數據');
// 返回上一個頁面
// return redirect()->back();
}
public function response(){
echo Session::get('message', 'default');
}
}
```
訪問:http://www.zhulinjie.com/laravel/public/student

再次訪問:http://www.zhulinjie.com/laravel/public/student

###Controller之Middleware
routes.php
```
// 宣傳階段
Route::get('student', ['uses' => 'StudentController@index', 'as' => 'student']);
// 活動進行階段
Route::group(['middleware' => ['activity']], function () {
Route::get('response', ['uses' => 'StudentController@response', 'as' => 'response']);
});
```
StudentController.php
```
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Student;
use Session;
class StudentController extends Controller
{
public function index(Request $request){
echo '活動還未開始...';
}
public function response(){
echo '活動正在進行中...';
}
}
```
Activity.php
```
<?php
namespace App\Http\Middleware;
use Closure;
class Activity{
// 前置寫法
public function handle($request, Closure $next){
if(time() < strtotime('2017-01-04')){
return redirect('student');
}
return $next($request);
}
}
```
Kernel.php
```
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
...
'activity' => \App\Http\Middleware\Activity::class
];
```
訪問:http://www.zhulinjie.com/laravel/public/response
2017-01-04日之前訪問

2017-01-04日之后訪問
