跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 使用 thinkphp6.0 时遇到一个报错,请问怎么解决?
未分類
10 6 月 2021

使用 thinkphp6.0 时遇到一个报错,请问怎么解决?

使用 thinkphp6.0 时遇到一个报错,请问怎么解决?

資深大佬 : frozenway 1

是一个验证登录的代码,验证代码为

<?php declare (strict_types = 1);  namespace appadmincontroller;  use thinkfacadeView; use thinkRequest; use appadminvalidateLogin as L; use thinkexceptionValidateException;  class Login{     //     public function index(Request $request){         if($request->isPost()){             $data = $request->post();             $remember = $data['remember'] ?? 0;             try{             $result = validate(L::class)->check($data);//halt($result);             }catch(ValidateException $e){                 halt($e);             }                      }         return View::fetch();     } } 

验证器的代码为:

<?php declare (strict_types = 1);  namespace appadminvalidate;  use thinkValidate;  class Login extends Validate {     /**      * 定义验证规则      * 格式:'字段名' =>  ['规则 1','规则 2'...]      *      * @var array      */     protected $rule = [         'username' => 'require|alphaNum|max:20',         'password' => 'require|alphaNum|length:6,16',     ];      /**      * 定义错误信息      * 格式:'字段名.规则名' =>  '错误信息'      *      * @var array      */     protected $message = [         'username.require' => '账号不能为空',         'password.require' => '密码不能为空',         'username.alphaNum' => '账号只能包含字母和数字',         'username.max' => '账号字符最大长度为 20',         'password.alphaNum' => '密码只能包含字母和数字',         'password.length' => '密码的长度为 6 ~ 16',     ]; }  

执行后报这个错误,请问是哪里出了问题?

#0 [0]Error in Validate.php line 1600 Call to a member function has() on null      * @param string $msg   错误信息      * @param mixed  $rule  验证规则数据      * @param string $title 字段描述名      * @return string|array      */     protected function parseErrorMsg(string $msg, $rule, string $title)     {         if (0 === strpos($msg, '{%')) {             $msg = $this->lang->get(substr($msg, 2, -1));         } elseif ($this->lang->has($msg)) {             $msg = $this->lang->get($msg);         }          if (is_array($msg)) {             return $this->errorMsgIsArray($msg, $rule, $title);         }          // rule 若是数组则转为字符串         if (is_array($rule)) {         ```

大佬有話說 (11)

  • 主 資深大佬 : frozenway

    这里有 thinkphp 的官方大佬在吗?

  • 資深大佬 : justrand

    错误信息不是说了么:function has() on null
    那你看下走到这个函数的时候,$msg 传了啥过去了。

  • 資深大佬 : jay4497

    $this->lang 这个 lang 没有初始化吧

  • 資深大佬 : jay4497

    帮你召唤大佬
    @topthink

  • 資深大佬 : littleylv

    @justrand #2
    Call to a member function has() on null 说的并不是 has 的参数$msg 有问题,而是调用 has 的实例$this->lang 是 null

  • 主 資深大佬 : frozenway

    @littleylv 是 null,但是不清楚为什么是 null

  • 主 資深大佬 : frozenway

    @jay4497 这个 lang 是 topthink 的框架内核文件,也没法改

  • 資深大佬 : ben1024

    @frozenway
    1.增加下挂载语言包试下,
    2.设置默认语言中文
    3.修改提示为英文(作用不大)
    应该使用了其他语言触发了语言包翻译

  • 資深大佬 : qwertyzzz

    目测要安装啥包 topthinkxxx 包,现在好多功能都分开包了

  • 資深大佬 : abccccabc

    主,转 go 语言呀。现在 php 的入门门槛越来越高了。

  • 資深大佬 : myd

    建议弃坑,thinkphp6 文档错漏、bug 很多

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具