>PHP 프레임워크 >ThinkPHP >thinkphp 컨트롤러의 정의와 사용법을 자세히 설명한 글

thinkphp 컨트롤러의 정의와 사용법을 자세히 설명한 글

藏色散人
藏色散人앞으로
2021-08-23 15:29:564109검색

다음은 thinkphpframework 튜토리얼 칼럼에서 thinkphp 컨트롤러의 정의와 사용법을 소개한 내용입니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!

컨트롤러 정의

클래스 이름은 파일 이름과 동일합니다.

Rendering Output

Rendering Output은 return Output을 사용합니다

<?php namespace app\admin\controller;
use app\admin\model\User;

class Index
{

    public function Index(){
        $data = array(
            &#39;ming&#39; => 'ming',
            'ming' => 'xiao'
        );
        return json($data);
    }

}

이때 페이지에서는 json 파일을 렌더링합니다
thinkphp 컨트롤러의 정의와 사용법을 자세히 설명한 글

컨트롤러 인터럽트 코드에는 포함될 수 없습니다. .
정지 출력 사용

<?php namespace app\admin\controller;
use app\admin\model\User;

class Index
{

    public function Index(){
        $data = array(
            &#39;ming&#39; => 'ming',
            'ming' => 'xiao'
        );
        halt("输出测试");
        return json($data);
    }

}

정지 출력 사용

thinkphp 컨트롤러의 정의와 사용법을 자세히 설명한 글

다단계 컨트롤러

다단계 컨트롤러 다단계 컨트롤러는 네임스페이스에서 직접 사용됩니다.

<?php namespace app\admin\controller\Index;


class Blog
{
    public function index(){

    }

    public function read($id){
        var_dump(url(&#39;index/blog/read&#39;, [&#39;id&#39; => 5, 'name' => 'ming']));
        return $id;
    }
}

인덱스 네임스페이스 아래 하위 컨트롤러 블로그를 정의합니다
디렉토리 구조
thinkphp 컨트롤러의 정의와 사용법을 자세히 설명한 글

라우팅 규칙 정의

<?php use think\facade\Route;

Route::rule(&#39;blog/:id&#39;, &#39;index.blog/read&#39;);
Route::rule(&#39;/&#39;, &#39;Index/index&#39;);

인덱스 경로 아래의 블로그 디렉토리에 액세스

기본 컨트롤러

컨트롤러에는 기본 컨트롤러가 있습니다
시스템은

app\BaseController

기본 컨트롤러

를 제공합니다.디렉토리 파일은 다음과 같습니다.
thinkphp 컨트롤러의 정의와 사용법을 자세히 설명한 글

다중 응용 프로그램 모드로 인해 모든 컨트롤에는 기본 컨트롤 클래스인
appBaseController

가 있습니다. . 기본 클래스가 디렉터리로 이동
thinkphp 컨트롤러의 정의와 사용법을 자세히 설명한 글

네임스페이스 변경

namespace app\index\controller;

use think\App;
use think\exception\ValidateException;
use think\Validate;
<?php namespace app\index\controller;

use think\Request;

class Index extends BaseController
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        $action = $this->request->action();
        $path = $this->app->getBasePath();
        var_dump($action);
        var_dump($path);
    }

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

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

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

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

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

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

출력 내용

string(5) "index" string(43) "/home/ming/PhpstormProjects/untitled12/app/"

컨트롤러 검증

<?php namespace app\index\controller;

use think\exception\ValidateException;
use think\Request;

class Index extends BaseController
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        try {
            $this->validate( [
                'name'  => 'thinkphp',
                'email' => 'thinkphp@qq.com',
            ],  'app\index\validate\User');
        } catch (ValidateException $e) {
            // 验证失败 输出错误信息
            dump($e->getError());
        }
    }

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

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

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

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

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

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

이런 식으로 컨트롤러가 검증됩니다

빈 컨트롤러

빈 컨트롤러는 메서드가

    public function __call($name, $arguments)
    {
        // TODO: Implement __call() method.
        return 'error request';
    }

리소스 컨트롤러라는 메소드

안정적인 컨트롤러 생성
Input

php think make:controller index@Blog

리소스 컨트롤러 생성
api 생성

<?php namespace app\index\controller;

use think\Request;

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

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

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

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

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

리소스 라우팅 등록

Route::resource('blog', 'Blog');

컨트롤러 미들웨어

컨트롤러 쓰기

<?php namespace app\index\middleware;

class Hello
{
    public function handle($request, \Closure $next){
        $request->hello = 'ming';
        return $next($request);
    }
}

라우트 등록 컨트롤러 사용

<?php use think\facade\Route;

Route::rule(&#39;ming&#39;, &#39;index/index&#39;)->middleware(
    [
        app\index\middleware\Hello::class
    ]
);

http://localhost:8082/index/ming
ming

이 나타나면 미들웨어 등록이 성공한 것입니다.

위 내용은 thinkphp 컨트롤러의 정의와 사용법을 자세히 설명한 글의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제