• thikphp 控制器


    控制器定义

    类名和文件名一样,

    渲染输出

    渲染输出使用return输出

    <?php
    namespace appadmincontroller;
    use appadminmodelUser;
    
    class Index
    {
    
        public function Index(){
            $data = array(
                'ming' => 'ming',
                'ming' => 'xiao'
            );
            return json($data);
        }
    
    }
    

    此时页面渲染出json文件
    2019-05-25-22-42-10----

    不能在控制器中中断代码。。
    使用halt输出

    <?php
    namespace appadmincontroller;
    use appadminmodelUser;
    
    class Index
    {
    
        public function Index(){
            $data = array(
                'ming' => 'ming',
                'ming' => 'xiao'
            );
            halt("输出测试");
            return json($data);
        }
    
    }
    

    使用halt 输出

    2019-05-25-22-51-14----

    多级控制器

    多级控制器 多级控制器直接在命名空间中使用

    <?php
    
    
    namespace appadmincontrollerIndex;
    
    
    class Blog
    {
        public function index(){
    
        }
    
        public function read($id){
            var_dump(url('index/blog/read', ['id' => 5, 'name' => 'ming']));
            return $id;
        }
    }
    

    定义了Index命名空间下的子控制器 Blog
    目录结构
    2019-05-25-23-15-28----

    定义路由规则

    <?php
    use thinkfacadeRoute;
    
    Route::rule('blog/:id', 'index.blog/read');
    Route::rule('/', 'Index/index');
    

    访问index路由下的blog目录

    基础控制器

    控制器都会有一个基础控制器
    系统会提供一个

    appBaseController
    

    基础控制器

    目录文件如下
    2019-05-25-23-51-06----

    所有的控制都有一个基础控制类
    appBaseController

    由于是多应用模式。。基础类移动到目录下
    2019-05-25-23-55-13----

    更改命名空间

    namespace appindexcontroller;
    
    use thinkApp;
    use thinkexceptionValidateException;
    use thinkValidate;
    
    <?php
    
    namespace appindexcontroller;
    
    use thinkRequest;
    
    class Index extends BaseController
    {
        /**
         * 显示资源列表
         *
         * @return 	hinkResponse
         */
        public function index()
        {
            $action = $this->request->action();
            $path = $this->app->getBasePath();
            var_dump($action);
            var_dump($path);
        }
    
        /**
         * 显示创建资源表单页.
         *
         * @return 	hinkResponse
         */
        public function create()
        {
            //
        }
    
        /**
         * 保存新建的资源
         *
         * @param  	hinkRequest  $request
         * @return 	hinkResponse
         */
        public function save(Request $request)
        {
            //
        }
    
        /**
         * 显示指定的资源
         *
         * @param  int  $id
         * @return 	hinkResponse
         */
        public function read($id)
        {
            //
        }
    
        /**
         * 显示编辑资源表单页.
         *
         * @param  int  $id
         * @return 	hinkResponse
         */
        public function edit($id)
        {
            //
        }
    
        /**
         * 保存更新的资源
         *
         * @param  	hinkRequest  $request
         * @param  int  $id
         * @return 	hinkResponse
         */
        public function update(Request $request, $id)
        {
            //
        }
    
        /**
         * 删除指定资源
         *
         * @param  int  $id
         * @return 	hinkResponse
         */
        public function delete($id)
        {
            //
        }
    }
    
    

    输出内容

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

    控制器验证

    <?php
    
    namespace appindexcontroller;
    
    use thinkexceptionValidateException;
    use thinkRequest;
    
    class Index extends BaseController
    {
        /**
         * 显示资源列表
         *
         * @return 	hinkResponse
         */
        public function index()
        {
            try {
                $this->validate( [
                    'name'  => 'thinkphp',
                    'email' => 'thinkphp@qq.com',
                ],  'appindexvalidateUser');
            } catch (ValidateException $e) {
                // 验证失败 输出错误信息
                dump($e->getError());
            }
        }
    
        /**
         * 显示创建资源表单页.
         *
         * @return 	hinkResponse
         */
        public function create()
        {
            //
        }
    
        /**
         * 保存新建的资源
         *
         * @param  	hinkRequest  $request
         * @return 	hinkResponse
         */
        public function save(Request $request)
        {
            //
        }
    
        /**
         * 显示指定的资源
         *
         * @param  int  $id
         * @return 	hinkResponse
         */
        public function read($id)
        {
            //
        }
    
        /**
         * 显示编辑资源表单页.
         *
         * @param  int  $id
         * @return 	hinkResponse
         */
        public function edit($id)
        {
            //
        }
    
        /**
         * 保存更新的资源
         *
         * @param  	hinkRequest  $request
         * @param  int  $id
         * @return 	hinkResponse
         */
        public function update(Request $request, $id)
        {
            //
        }
    
        /**
         * 删除指定资源
         *
         * @param  int  $id
         * @return 	hinkResponse
         */
        public function delete($id)
        {
            //
        }
    }
    
    

    这样控制器验证

    空控制器

    空控制器是当找不到的方法的时候调用的方法

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

    资源控制器

    创建restful控制器
    输入

    php think make:controller index@Blog
    

    生成资源控制器
    生成api

    <?php
    
    namespace appindexcontroller;
    
    use thinkRequest;
    
    class Blog
    {
        /**
         * 显示资源列表
         *
         * @return 	hinkResponse
         */
        public function index()
        {
            //
        }
    
        /**
         * 保存新建的资源
         *
         * @param  	hinkRequest  $request
         * @return 	hinkResponse
         */
        public function save(Request $request)
        {
            //
        }
    
        /**
         * 显示指定的资源
         *
         * @param  int  $id
         * @return 	hinkResponse
         */
        public function read($id)
        {
            //
        }
    
        /**
         * 保存更新的资源
         *
         * @param  	hinkRequest  $request
         * @param  int  $id
         * @return 	hinkResponse
         */
        public function update(Request $request, $id)
        {
            //
        }
    
        /**
         * 删除指定资源
         *
         * @param  int  $id
         * @return 	hinkResponse
         */
        public function delete($id)
        {
            //
        }
    }
    
    

    注册资源路由即可

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

    控制器中间件

    编写控制器

    <?php
    
    
    namespace appindexmiddleware;
    
    class Hello
    {
        public function handle($request, Closure $next){
            $request->hello = 'ming';
            return $next($request);
        }
    }
    

    使用路由注册控制器

    <?php
    
    use thinkfacadeRoute;
    
    Route::rule('ming', 'index/index')->middleware(
        [
            appindexmiddlewareHello::class
        ]
    );
    
    

    访问 http://localhost:8082/index/ming
    出现 ming

    说明中间件注册成功

    在无知的道路上缓步前行
  • 相关阅读:
    #include <utility>
    Html的空格显示
    ExtJs自学教程(1):一切从API開始
    天黑的时候,我又想起那首歌
    citrix协议ICA技术原理
    约瑟夫环问题
    数据结构和算法设计专题之---八大内部排序
    HDU
    深入分析C++引用
    八大排序算法总结
  • 原文地址:https://www.cnblogs.com/melovemingming/p/10950928.html
Copyright © 2020-2023  润新知