跟着朱老师的视频“ThinkPHP5快速开发企业站点”写代码,运行admin_edit页时,出现“未定义数组索引:is_update”的错误,不知道如何解决,特请教各位,谢谢!
Admin.php控制器代码:
//执行更新操作
public function update(Request $request)
{
if ($request->isAjax(true)) {
//获取提交的数据,自动过滤空值
$data = array_filter($request->param());
//设置更新条件
$where = ['is_update' => $data['is_update']];
//更新用户表
$result = AdminModel::update($data, $where);
//更新成功的提示信息
$status = 1;
$message = '更新成功';
//如果更新失败
if (is_null($result)) {
$status = 0;
$message = '更新失败';
}
}
return ['status' => $status, 'message' => $message];
}
admin_edit.html代码(html页面经测试,删除控制器逻辑代码后,能正常运行):
{layout name="public/layout" /}
<div class="x-body">
<form class="layui-form">
<div class="layui-form-item">
<label for="username" class="layui-form-label">
<span class="x-red">*</span>登录名
</label>
<div class="layui-input-inline">
<input type="text" id="username" name="username" required="" lay-verify="required" autocomplete="off" value="{$admin.username}"
class="layui-input" disabled>
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>用户名不可修改
</div>
</div>
<div class="layui-form-item">
<label for="L_email" class="layui-form-label">
<span class="x-red">*</span>邮箱
</label>
<div class="layui-input-inline">
<input type="text" value="{$admin.email}" id="email" name="email" required="" lay-verify="email" autocomplete="off" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>
</div>
</div>
<span class="x-red">*</span>新密码
</label>
<div class="layui-input-inline “>
<输入类型=“密码”id=“密码”名称=“密码”必需=“”lay-verify=“密码”自动完成=“关闭”类=“layui-input”
value="123456" placeholder="密码">
6到12个字符
</div>
</div>
<!--添加隐藏字段-->
<输入类型=“隐藏”名称=“id”值=“{$Think.session.user_info.id}”lay-filter=“id”>
<输入类型=“隐藏”名称=“is_update”值=“{$Think.session.user_info.is_update}”lay-filter=“is_update”>
< ;/label>
保存
按钮>
<脚本>
layui.use('form', function () {
// $ =layui.jquery;
var form =layui.form;
/ / ,layer =layui.layer;
#//自定义验证规则
form.verify({
password: [/ (.+){6,12}$/, '密码必须6到12位']
});
#
找到出错原因了,实例在登录时保存Session的代码是这样的://Session::set('user_id', $userName);Session::set('user_info', $data);上面的$data只有admin的用户名和密码信息,并不包含is_update等字段信息,我将它改成这样://Session::set('user_id', $userName);Session::set('user_info', $admin);Bug消失。注:Base控制器也改一下:define('USER_ID', Session::get('user_info.id'));