首页  >  问答  >  正文

未定义数组索引:is_update

跟着朱老师的视频“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位']

});


##//监听提交

form.on('提交(保存)', function () {

$.ajax({

type: 'POST',

url : "{:url('admin/update')}",

data: $(".layui-form").serialize(),

dataType: "json",

success: function (data) {

if (data.status == 1) {

layer.msg(JSON.stringify(data.message), {icon: 6,time:2000}, function() {

//获得frameIndex

var index =parent.layer.getFrameIndex(window.name);

//关闭当前帧

parent.layer.close(index);

});

} else {

layer.msg(JSON.stringify( data.message), {icon:5,time:2000});

}

}

});

return false;

});

});



#

流金岁月流金岁月2341 天前1449

全部回复(2)我来回复

  • 流金岁月

    流金岁月2018-06-17 11:30:20

    找到出错原因了,实例在登录时保存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'));

    回复
    1
  • ringa_lee

    还好你找出原因了,不然这段代码得看半天

    ringa_lee · 2018-06-18 21:50:07
  • 取消回复