Maison > cadre php > PensezPHP > le corps du texte

Un article expliquant en détail la définition et l'utilisation du contrôleur thinkphp

藏色散人
Libérer: 2021-08-25 09:01:57
avant
4043 Les gens l'ont consulté

Ce qui suit est une introduction à la définition et à l'utilisation des contrôleurs thinkphp de la colonne thinkphpframework tutoriel. J'espère que cela sera utile aux amis dans le besoin !

Définition du contrôleur

Le nom de la classe est le même que le nom du fichier,

Sortie de rendu

La sortie de rendu utilise la sortie de retour

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

}
Copier après la connexion

À ce moment, la page restitue un fichier json
Un article expliquant en détail la définition et lutilisation du contrôleur thinkphp

ne peut pas être dans le code d'interruption du contrôleur. .
Utiliser la sortie d'arrêt

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

}
Copier après la connexion

Utiliser la sortie d'arrêt

Un article expliquant en détail la définition et lutilisation du contrôleur thinkphp

Contrôleur multi-niveaux

Contrôleur multi-niveaux Le contrôleur multi-niveaux est utilisé directement dans l'espace de noms

<?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;
    }
}
Copier après la connexion

Définit le sous-contrôleur Blog sous l'espace de noms Index
Répertoire structure
Un article expliquant en détail la définition et lutilisation du contrôleur thinkphp

Définir les règles de routage

<?php use think\facade\Route;

Route::rule(&#39;blog/:id&#39;, &#39;index.blog/read&#39;);
Route::rule(&#39;/&#39;, &#39;Index/index&#39;);
Copier après la connexion

Accéder au répertoire du blog sous la route d'index

Contrôleur de base

Le contrôleur aura un contrôleur de base
Le système fournira un

app\BaseController
Copier après la connexion

Contrôleur de base

Le fichier de répertoire est comme suit
Un article expliquant en détail la définition et lutilisation du contrôleur thinkphp

Tous les contrôles ont une classe de contrôle de base
appBaseController

En raison du mode multi-application. . La classe de base est déplacée vers le répertoire
Un article expliquant en détail la définition et lutilisation du contrôleur thinkphp

Changer l'espace de noms

namespace app\index\controller;

use think\App;
use think\exception\ValidateException;
use think\Validate;
Copier après la connexion
<?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)
    {
        //
    }
}
Copier après la connexion

Contenu de sortie

string(5) "index" string(43) "/home/ming/PhpstormProjects/untitled12/app/"
Copier après la connexion

Vérification du contrôleur

<?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)
    {
        //
    }
}
Copier après la connexion

De cette façon, le contrôleur est vérifié

Contrôleur vide

Le contrôleur vide est lorsque la méthode ne peut pas être trouvé La méthode appelée

    public function __call($name, $arguments)
    {
        // TODO: Implement __call() method.
        return 'error request';
    }
Copier après la connexion

Contrôleur de ressources

Créer un contrôleur restful
Input

php think make:controller index@Blog
Copier après la connexion

Générer un contrôleur de ressources
Générer une 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)
    {
        //
    }
}
Copier après la connexion

Enregistrer le routage des ressources

Route::resource('blog', 'Blog');
Copier après la connexion

Middleware de contrôleur

Écrire un contrôleur

<?php namespace app\index\middleware;

class Hello
{
    public function handle($request, \Closure $next){
        $request->hello = 'ming';
        return $next($request);
    }
}
Copier après la connexion

Utiliser la route contrôleur d'enregistrement

<?php use think\facade\Route;

Route::rule(&#39;ming&#39;, &#39;index/index&#39;)->middleware(
    [
        app\index\middleware\Hello::class
    ]
);
Copier après la connexion

pour visiter http://localhost:8082/index/ming
Si ming

apparaît, cela signifie que l'enregistrement du middleware a réussi.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal