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( 'ming' => 'ming', 'ming' => 'xiao' ); return json($data); } }
À ce moment, la page restitue un fichier json
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( 'ming' => 'ming', 'ming' => 'xiao' ); halt("输出测试"); return json($data); } }
Utiliser la sortie d'arrêt
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('index/blog/read', ['id' => 5, 'name' => 'ming'])); return $id; } }
Définit le sous-contrôleur Blog sous l'espace de noms Index
Répertoire structure
Définir les règles de routage
<?php use think\facade\Route; Route::rule('blog/:id', 'index.blog/read'); Route::rule('/', 'Index/index');
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
Contrôleur de base
Le fichier de répertoire est comme suit
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
Changer l'espace de noms
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) { // } }
Contenu de sortie
string(5) "index" string(43) "/home/ming/PhpstormProjects/untitled12/app/"
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) { // } }
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'; }
Contrôleur de ressources
Créer un contrôleur restful
Input
php think make:controller index@Blog
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) { // } }
Enregistrer le routage des ressources
Route::resource('blog', 'Blog');
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); } }
Utiliser la route contrôleur d'enregistrement
<?php use think\facade\Route; Route::rule('ming', 'index/index')->middleware( [ app\index\middleware\Hello::class ] );
pour visiter http://localhost:8082/index/ming
Si ming
apparaît, cela signifie que l'enregistrement du middleware a réussi.