swoft學習筆記之控制器

創建控制器

主要通過 @Controller 註解實現,代碼可以放在任意位置,但爲了統一標準,建議放在 app/Http/Controller 目錄下
使用註解@Controller(prefix=“路由前綴”),需要引入 Controller 類

路由綁定

swoft 並沒有採用配置文件的方式來配置路由,而是採用了註解,可以使用 @RequestMapping 註解添加路由
使用註解 @RequestMapping ,需要引入該類,其中相關屬性如下:

  • route 指定路由
  • method 指定請求方式(GET、POST、PUT、PATCH、DELETE、OPTIONS、HEAD)
  • params 指定path變量正則匹配限制

請求對象

請求對象 Request 爲 Swoft\Http\Message\Request

獲取請求對象
  • 通過控制器方法參數注入 (Request $request)
  • 通過請求上下文獲取 Swoft\Context\Context::mustGet()->getRequest()
請求對象獲取請求數據

由於獲取請求數據內容較多,後面單獨講解,暫時缺省

響應對象

響應對象 Response 爲 Swoft\Http\Message\Response

獲取響應對象
  • 通過控制器方法參數注入 (Response $response)
  • 通過請求上下文獲取 Swoft\Context\Context::mustGet()->getResponse()
響應對象返回數據

由於獲取請求數據內容較多,比如設置狀態碼,輸出字符串內容,設置響應數據格式,輸出數組,重定向等,後面單獨講解,暫時缺省

參數驗證

永遠不要相信前端傳輸的數據
swoft 提供系統自帶的驗證規則進行聲明驗證器以及自定義驗證器的功能,當然也支持自定義驗證器規則,此處缺省,後續文章會詳細介紹

代碼樣例

基類Controller
<?php   declare(strict_types=1);


namespace app\Http\Controller;

use Swoft\Http\Message\Request;

interface BaseController
{
	public function index(Request $request);
	
	public function show(Request $request);
	
	public function edit(Request $request);
	
	public function update(Request $request);
	
	public function create();
	
	public function store(Request $request);
	
	public function destroy(Request $request);
	
}
實現類
<?php declare(strict_types=1);


namespace app\Http\Controller\Admin;

use app\Http\Controller\BaseController;
use Swoft\Http\Message\Request;
use Swoft\Http\Server\Annotation\Mapping\Controller;
use Swoft\Http\Server\Annotation\Mapping\RequestMethod;
use Swoft\Validator\Annotation\Mapping\Validate;
use app\Validator\TestValidator;
use Swoft\Context\Context;

/**
 * Class TestController
 * @package app\Http\Controller\Admin
 * @Controller(prefix="/admin/test")
 */
class TestController implements BaseController
{
	/**
	 * @RequestMapping(route="index",method={RequestMethod::GET})
	 * @Validate(validator="TestValidator",fields={"name"})
	 * @param Request $request
	 */
	public function index(Request $request){
		$response = Context::mustGet()->Response();
		$data     = ['name'=>'Swoft2.0'];
		return $response->withData($data);
	}
	
	public function show(Request $request){

	}
	
	public function edit(Request $request){

	}
	
	public function update(Request $request){

	}
	
	public function create(){

	}
	
	public function store(Request $request){

	}
	
	public function destroy(Request $request){

	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章