주 선생님의 영상 "ThinkPHP5 기업용 사이트의 신속한 개발"에 이어 admin_edit 페이지 실행 시 "정의되지 않은 배열 인덱스: is_update" 오류가 나타나는데 어떻게 해결해야 할지 모르겠습니다. 도움을 주셔서 감사합니다!
Admin.php 컨트롤러 코드:
//업데이트 작업 수행
공용 함수 업데이트($request 요청)
{
if ($request->isAjax(true)) {
//제출 데이터 가져오기 , 빈 값을 자동으로 필터링
$data = array_filter($request->param());
//업데이트 조건 설정
$where = ['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=" 사용자 이름 " 필수=""lay-verify="required" autocomplete="off" value="{$admin.username}"
class="layui-input" 비활성화됨>
</div>
< div class="layui-form-midlayui-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>Mailbox
</label>
<div class="layui-input-inline">
<input type="text" value="{ $ admin.email}" id="email" name="email" 필수=""lay-verify="email" autocomplete="off" class="layui-input">
</div>
< ;div class="layui-form-midlayui-word-aux">
<span class="x-red">*</span>
</div>
< /div>
<div class="layui-form-item">
<label for="L_pass" class="layui-form-label">
<span class="x-red" >*</span>new密码
</label>
<div class="layui-input-inline">
<input type="password" id="password" name= "password" 필수=""lay-verify="password" autocomplete="off" class="layui-input"
value="123456" placeholder="密码">
</div>
< ;div class="layui-form-midlayui-word-aux">
6到12个字符
</div>
</div>
<!--添加隐藏字段- ->
<input type="hidden" name="id" value="{$Think.session.user_info.id}"lay-filter="id">
<input type="숨김 " name="is_update" value="{$Think.session.user_info.is_update}"lay-filter="is_update">
<div class="layui-form-item">
<label for="repassword" class="layui-form-label">
</label>
<button class="layui-btn"lay-submitlay-filter="save" id= "btnSubmit">
保存
</button>
</div>
</form>
</div>
<script>
layui.use('form ', 함수() {
// $ =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: 함수(데이터) {
if (data.status == 1) {
layer.msg(JSON. stringify(data.message), {icon:6,time:2000}, function() {
// 获得frame索引
var index = parent.layer.getFrameIndex(window.name);
//关闭当前프레임
parent.layer.close(index);
});
} else {
layer.msg(JSON.stringify(data.message), {icon:5,time:2000});
}
}
});
return false;
});
});
</script>
오류 원인을 찾아보니 로그인 시 Session을 저장하는 코드는 다음과 같습니다. //Session::set('user_id', $userName);Session::set('user_info', $data);The 위의 $data는 admin의 사용자 이름과 비밀번호 정보에만 is_update와 같은 필드 정보가 포함되어 있지 않습니다. //Session::set('user_id', $userName);Session::set('user_info) ', $admin); 버그가 사라집니다. 참고: 기본 컨트롤러도 변경하세요. 정의('USER_ID', Session::get('user_info.id'));