## 資源路由的生成
Laravel 的資源控制器使得構建圍繞資源的 RESTful 控制器變得毫無痛苦,例如,你可能想要在應用中創建一個控制器,用于處理關于圖片存儲的 HTTP 請求,使用 Artisan 命令 make:controller,我們可以快速創建這樣的控制器:
~~~
php artisan make:controller PhotoController --resource
~~~
這個控制器包含了每一個資源操作對應的方法。對應的資源路由寫法如下
~~~
Route::resource('photo', 'PhotoController');
~~~
執行完以后生成如下控制器\app\Http\Controllers\PhotoController.php
~~~
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
class PhotoController extends Controller
{
/**
* 顯示資源的列表。
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* 顯示用于創建新資源的表單。
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* 將新創建的資源存儲在存儲中。
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
*顯示指定的資源。
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
*顯示用于編輯指定資源的表單。
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* 更新存儲中指定的資源。
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* 從存儲中刪除指定的資源。
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
~~~
## RESTFul 輸出
### 傳值
使用助手函數提供的 response 方法
~~~
if (! function_exists('response')) {
/**
* Return a new response from the application.
*
* @param string $content
* @param int $status
* @param array $headers
* @return \Symfony\Component\HttpFoundation\Response|\Illuminate\Contracts\Routing\ResponseFactory
*/
function response($content = '', $status = 200, array $headers = [])
{
$factory = app(ResponseFactory::class);
if (func_num_args() === 0) {
return $factory;
}
return $factory->make($content, $status, $headers);
}
}
~~~
方法的使用
~~~
$data=[
'id'=>200,
'name'=>'laravel',
];
return response($data);
~~~
或則直接返回data值
~~~
return $data;
~~~
### 傳視圖
~~~
return view('index');
~~~
### 返回用戶上一級操作
~~~
return back();
~~~
### 傳視圖攜帶參數
視圖函數攜帶值
~~~
$data=[
'id'=>200,
'name'=>'laravel',
];
return view('index',compact('data'));
~~~
> #### compact解釋說明:
> 定義:
> array compact ( mixed $varname1 [, mixed $... ] )
> 創建一個包含變量及其值的數組。
> 對于其中每一個,compact()在當前符號表中查找具有該名稱的變量,并將其添加到輸出數組,以使變量名成為鍵,變量的內容成為該鍵的值。 簡而言之,它與extract()的相反。
> 任何未設置的字符串將被簡單地跳過。
> 實例說明:
> 當 return $data;輸出結果
> {"id":200,"name":"laravel"}
> 當 return compact('data');輸出結果
> {"data":{"id":200,"name":"laravel"}}
> 由此可見:compact函數吧data數據添加一個索引
with攜帶
~~~
return view('index')->with('data',$data);
~~~
with攜帶參數返回用戶之前的操作
~~~
return back()->with('key','value!');
~~~
函數所在位置\vendor\laravel\framework\src\Illuminate\Http\RedirectResponse.php
| | |
| --- | --- |
| 函數 | 說明 |
|withCookies | 向響應中添加多個Cookie。 |
|withInput|Flash an array of input to the session.|
|withErrors| 將一個容器的錯誤發送到會話。|