tp6学习笔记一

206 阅读2分钟

一、 在config文件夹下创建static.php配置文件。作用:配置与业务状态码相关的配置。

内容:

return [

    "success" => 1,

    "error" => 0,

    "not_login" => -1,

    "user_is_register" => -2,

    "action_not_fount" => -3,

    "controller_not_fount" => -4,

];


二、 tp中输出sql的方式。

第一种:

$result = Db::table("mall_table")->where('id',10)->fetchSql()->find();

第二种:

$result = Db::table("mall_table")->where('id',10)->find();

echo Db::getLastSql();exit();


三、 tp中新增数据逻辑

$data = [

    "title" => "hello1",

    "content" => "这是第四条数据",

    "category_id" => 1,

    "status" => 1,

    "create_time" => time(),

];

 // 新增逻辑 
 $result = Db::table("mall_tables")->insert($data);


四、 tp中数据删除逻辑,一般使用假删除,即更新数据状态为99$result = Db::table("mall_tables")->delete(1);

$result = Db::table("mall_tables")->where()->delete();

五、 tp中数据更新逻辑

$result = Db::table("mall_tables")->where("id",2)->update(["status" => "2"]);


六、 将查询数据转换为数组:toArray()

$result = Tables::find(2);

dump($result->toArray());


七、 tp获取参数的方式

use think\facade\Request as Abc;

dump($request->param("abc"));  // 第二种方式 
 dump(input("abc"));  // 第三种方式 
 // 第四种方式 
 dump(request()->param("abc"));

 // 第五种方法 
 dump(Abc::param("abc"));

$request->isPost();

$request->isAjax();

$request->isGet();

八、 tp多应用模式下,配置完路由后,访问需要加应用名

admin 应用下的路由,访问时需要加上 admin:  admin/index 

Route::rule("index","index/index");


九、 halt()方法相当于 dump();die;
十二、多应用模式可以在本应用下建立属于自己的不可预知的内部异常处理,即:建立exception文件夹,http.php文件。如果要让本应用的异常处理文件生效,需要将provider.php复制一份放到当前应用目录下,并修改里面的异常文件路径。

provider.php内容:

use app\ExceptionHandle;

use app\Request;

 // 容器 Provider 定义文件 
 return [

    'think\exception\Handle' =>'app\admin\exception\Http',

];

http.php内容:

namespace app\admin\exception;

use think\exception\Handle;

use think\Response;

use Throwable;



class Http extends Handle {

    public $httpStatus = 500;

     /**

     * Render an exception into an HTTP response.

     *

     * @access public

     * @param \think\Request $request

 * @param Throwable $e

 * @return Response

 */

 public function render($request, Throwable $e): Response
    {
        if(method_exists($e, "getStatusCode")) {
            //修改返回http状态
            $httpStatus = $e->getStatusCode();
        } else {
            $httpStatus = $this->httpStatus;
        }
         // 添加自定义异常处理机制 
         return show(config("status.error"), $e->getMessage(), [], $httpStatus);
    }

}

十、show方法为通用化API数据格式,写在全局的common.php文件中
内容为:
 /**
 * 通用化 API 数据格式输出 
 * @param $status
 * @param string $message
 * @param array $data
 * @param int $httpStatus
 * @return \think\response\Json
 */
 function show($static,$message = "error",$data = [],$httpStatus = 200){

    $result = [
        "result" => $data,
        "static" => $static,
        "message" => $message
    ];

    return json($result,$httpStatus);

}

十一、中间件需要将middleware.php中间件文件放入到当前应用目录下(多应用模式)。
并做配置:
app\admin\middleware\Check::class,


十二、创建的中间件文件下的中间件文件中,handle方法为固定方法。

也可以在中间件中结束调度时做一些数据处理

namespace app\admin\middleware;

class Auth {

    public function handle($request, \Closure $next) {

         //dump($request->pathinfo());

        // 前置中间件 
        if(empty(session(config("admin.session_admin"))) && !preg_match("/login/", $request->pathinfo())) {

            return redirect((string) url('login/index'));

        }



        $response = $next($request);

         //if(empty(session(config("admin.session_admin"))) && $request->controller() != "Login") {
         //return redirect((string) url('login/index'));
         //}

         return $response;

        // 后置中间件 

 }

 /**
 * 中间件结束调度 
 * @param \think\Response $response
 */

 public function end(\think\Response $response) {

    }

}

十三、可以在路由中直接绑定中间件文件。不需要在middleware.php绑定路径。

Route::rule("detail", "detail/index", "GET")->middleware(\app\admin\middleware\Detail::class );