是一个验证登录的代码,验证代码为
<?php
declare (strict_types = 1);
namespace app\admin\controller;
use think\facade\View;
use think\Request;
use app\admin\validate\Login as L;
use think\exception\ValidateException;
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 app\admin\validate;
use think\Validate;
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)) {
```
1
frozenway OP 这里有 thinkphp 的官方大佬在吗?
|
2
yEhwG10ZJa83067x 2021-06-18 10:43:17 +08:00
错误信息不是说了么:function has() on null
那你看下走到这个函数的时候,$msg 传了啥过去了。 |
3
jay4497 2021-06-18 10:51:31 +08:00
$this->lang 这个 lang 没有初始化吧
|
5
littleylv 2021-06-18 11:21:56 +08:00
@justrand #2
Call to a member function has() on null 说的并不是 has 的参数$msg 有问题,而是调用 has 的实例$this->lang 是 null |
8
ben1024 2021-06-18 13:51:30 +08:00
|
9
qwertyzzz 2021-06-18 13:54:45 +08:00
目测要安装啥包 topthink\xxx 包,现在好多功能都分开包了
|
10
abccccabc 2021-06-19 15:45:56 +08:00
楼主,转 go 语言呀。现在 php 的入门门槛越来越高了。
|
11
myd 2021-06-19 16:15:48 +08:00
建议弃坑,thinkphp6 文档错漏、bug 很多
|