ホームページ  >  記事  >  PHPフレームワーク  >  thinkphpコントローラーの定義と使い方を詳しく解説した記事

thinkphpコントローラーの定義と使い方を詳しく解説した記事

藏色散人
藏色散人転載
2021-08-23 15:29:564032ブラウズ

以下は、thinkphp コントローラーの定義と使用法を紹介する thinkphp フレームワーク チュートリアル コラムです。困っている友人の役に立てば幸いです。

コントローラー定義

クラス名はファイル名と同じです。

レンダリング出力

出力のレンダリングには return 出力が使用されます

<?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;
    }
}

を使用して、Index 名前空間の下にサブコントローラ Blog を定義します
ディレクトリ構造
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';
    }

リソース コントローラー

Restful コントロールの作成Device
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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。