创建控制器
主要通过 @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
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);
}
实现类
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){
}
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
趁还没掉光,赶紧给每根头发起个名字吧~