thinkphp6-控制器

控制器定义

添加控制器 app/controller/User.php

<?php
namespace app\controller;

class User
{
    public function login()
    {
        return 'login';
    }
}

添加路由 route/app.php

Route::rule('user/login','user/login');

访问测试

http://127.0.0.1:8000/user/index

基础控制器

系统基础控制器类

app\BaseController

直接使用think\App和think\Request对象

<?php
namespace app\controller;

use app\BaseController;

class User extends BaseController
{
    public function login()
    {
        $action = $this->request->action();
        $path = $this->app->getBasePath();
        return 'login';
    }
}

空控制器

空控制器 __call

<?php
namespace app\controller;

use app\BaseController;

class User extends BaseController
{
    public function login()
    {
        $action = $this->request->action();
        $path = $this->app->getBasePath();
        return 'login';
    }

    public function __call($method, $args)
    {
        var_dump($method);
        var_dump($args);
        return 'error request!';
    }
}

测试与结果

http://127.0.0.1:8000/user/create?name=huyongjian
string(6) "create" array(1) { ["name"]=> string(10) "huyongjian" } error request!

自动生成控制器

生成新Student控制器

php think make:controller Student

控制器添加return

<?php
declare (strict_types = 1);

namespace app\controller;

use think\Request;

class Student
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        return 'index';
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        return 'create';
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        return 'save';
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        return 'read';
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        return 'edit';
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        return 'update';
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        return 'delete';
    }
}

注册路由

Route::resource('student', 'Student');

访问测试

GET http://127.0.0.1:8000/student
POST http://127.0.0.1:8000/student/create
PUT  http://127.0.0.1:8000/student/save
GET  http://127.0.0.1:8000/student/read
GET  http://127.0.0.1:8000/student/edit
PUT  http://127.0.0.1:8000/student/update
DELETE http://127.0.0.1:8000/student/delete

控制器中间件

中间件生成与修改

php think make:middleware Auth
<?php
declare (strict_types = 1);

namespace app\middleware;

class Auth
{
    /**
     * 处理请求
     *
     * @param \think\Request $request
     * @param \Closure       $next
     * @return Response
     */
    public function handle($request, \Closure $next)
    {
        echo 'middleware auth'.PHP_EOL;
        if ($request->param('name') == 'think') {
              return redirect('user/think');
        }

        return $next($request);
    }
}

控制器添加中间件

<?php
namespace app\controller;

use app\BaseController;
use app\middleware\Auth;

class User extends BaseController
{

    protected $middleware = [Auth::class];

    public function login()
    {
        $action = $this->request->action();
        $path = $this->app->getBasePath();
        return 'login';
    }

    public function __call($method, $args)
    {
        var_dump($method);
        var_dump($args);
        return 'error request!';
    }
}

测试与结果

http://127.0.0.1:8000/user/login
middleware auth login
posted @ 2021-10-16 20:34  胡勇健  阅读(267)  评论(0)    收藏  举报