[Laravel] 05 - Controller

大綱


PHP章節貌似有相似功能,回頭看下。 php

 

 

請求 URL


1、URL 處理方法

請求使用的是:symfony/http-foundation組件html

$_GET, $_POST, $_COOKIE, $_FILES, $_SERVERweb

 

[1] 在URL中,獲取請求值ajax

public function request1(Request $request)
{
  # (1) url中參數獲取   
$request ->input('name');   $request ->input('sex', '未知');
  # (2) 判斷有沒有這個參數   
if ($ request->has('name')) {     echo $request->input('name');   } else {     echo '無該參數';   }
  # (3) 獲取全部參數   
$res = $request->all();   dd($res); }

 

[2] 在URL中,判斷請求的類型 json

輸入URL ----> 導向request1() ----> 判斷自身的路由是否對
Route::any('student/request1', [uses' => 'StudentController@request1']);
------------------------------------------------------------------------

public function request1(Request $request)
{
  # (1) 是post? get?   
echo $request->method();   if ($request->isMethod('GET')) {     echo 'Yes';   } else {     echo 'No';   }   # (2) 發送的是不是ajax request   Res = $request->ajax();   var_dump($res);   # (3) 是不是student控制器下的某個方法   # 有這個路由麼?     $request->is('student/*');   
  # (4) 獲取當前URL
  $request->url();
}

 

 

 

Session 處理


1、縱覽

原生:沒有框架的寫法見 - [PHP] 05 - Cookie & Session數組

配置:config文件夾中的 session.php服務器

啓動:app/Http文件夾的 Kernel.phpsession

加載:加上上述的「中間件」 - 'webapp

 

 

2、Session的參數操做

實踐:發送給服務器一個session帶有參數,並在第二次session請求中成功取回參數。框架

[寫法一]

[寫法二]
session()->put('key2', 'value2'); echo session()->get('key2'); [寫法三] Session::put('key3', 'value3'); echo Session::get('key3');
echo Session::get('key4', 'default');  # 沒有取到的話,就取到一個替代的默認值

[寫法四]
Session::put(['key4'] => 'value4']);   # 以數組的形式存儲數據
echo Session::get('key4', 'default');

 

放入多個,變爲數組。

[寫法五]
Session::push('student', 'sean');
Session::push('student', 'imooc')

# student裏有了兩個items,變爲了數組
$res = Session::get('student', 'default');
var_dump($res);

 

取完就刪除session中的數據。

[寫法六]
Session::push('student', 'sean');
Session::push('student', 'imooc')

# 不是讀,而是直接取走;取第二次就沒值了
$res = Session::pull('student', 'default');
var_dump($res);

 

獲取全部的數據。

[寫法七]
$res = Session::all();
var_dump($res);

 

獲取全部的數據。

[寫法八]
if (Session::has('key')) {
  $res = Session:all();
  dd($res);
} else {   echo '大家老大不在‘;
}

 

刪除數據。

[寫法九]
# 1.刪除指定的數據
Session::forget('key1');
$res = Session:all()
dd($res);

#2.清空session數據
Session::flush();

 

只有第一次存在,以後就沒了。

[寫法十]
Session::flash('key-flash', 'val-flash');
echo Session::get('key-flash');

 

 

 

響應處理


1、Response 響應

路由:

Route::any('response', [uses' => 'StudentController@response']);

響應:【以json的格式】

 

 

2、重定向

  • 不帶參數
在response()中:

return redirect('session2');

相似於:goto 到了seesion2的「路由映射的函數」。

 

  • 帶參數

[寫法一]

在response()中:

return redirect('session2')->with('message', '我是快閃數據');

session2中提取參數;默認參數是:’暫無信息‘。

 

[寫法二]
return
redirect()->action('StudentController@section2')->with('message', '我是快閃數據'); [寫法三] return redirect()->route(<別名>)->with('message', '我是快閃數據');

 

  • 返回上一個頁面
return redirect()->back(); 

 

 

 

中間件


1、大綱

 

 

 

2、定義中間件 

  • 路由
Route::any('activity0', [uses' => 'StudentController@activity0']);
Route::any('activity1', [uses' => 'StudentController@activity1']);
Route::any('activity2', [uses' => 'StudentController@activity2']);

 

  • 中間件

[1] 建立

[create app/Http/Middleware/Activity.php]

next 是個函數;Closure是一種類型;

【前置操做,由於在請求前設置的邏輯】

如下是後置操做的例子

 

[2] 註冊

app/Http/Kernel.php

可見,中間件就是個「類」。

 

[3] 使用

活動頁面須要中間件的驗證,時間到了才能可用!沒到,則跳轉到宣傳頁面。

    

[4] 訪問

public function activity0(){
  return '活動就要開始';
}

public function activity1()
{
  return '活動進行中';
}

public function activity2()
{
  return '活動進行中';
}
相關文章
相關標籤/搜索