Wenn ich dem Video „ThinkPHP5 Rapid Development of Enterprise Sites“ folge, erscheint beim Ausführen der Seite „admin_edit“ der Fehler „undefinierter Array-Index: is_update“. Ich möchte Sie fragen für Hilfe. Danke!
Admin.php-Controller-Code:
//Aktualisierungsvorgang durchführen
public function update(Request $request)
{
if ($request->isAjax(true)) {
//Übermittlungsdaten abrufen , leere Werte automatisch filtern
$data = array_filter($request->param());
//Aktualisierungsbedingungen festlegen
$where = ['is_update' => ]];
//Benutzertabelle aktualisieren
$result = AdminModel::update($data, $where);
//Eingabeaufforderung für erfolgreiche Aktualisierung
$status = 1 ;
$message = 'Update erfolgreich';
//Wenn das Update fehlschlägt
if (is_null($result)) {
$status = 0;
$message = 'Update fehlgeschlagen';
}
}
return ['status' => $status, 'message' => $message];
}
admin_edit.html-Code (die HTML-Seite wurde getestet und nach dem Löschen des Controller-Logikcodes , kann normal ausgeführt werden):
{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>Anmeldename
</label>
<div class="layui-input-inline">
<input type="text" id="username" name=" Benutzername " erforderlich=""lay-verify="erforderlich" autocomplete="off" value="{$admin.username}"
class="layui-input" deaktiviert>
</div>
< div class="layui-form-midlayui-word-aux">
<span class="x-red">*</span>Benutzername kann nicht geändert werden
</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" require=""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>新密码
</label>
<div class="layui-input-inline">
<input type="password" id="password" name= "password" erforderlich=""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="hidden " 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 ', function () {
// $ =layui.jquery;
var form =layui.form;
// ,layer =layui.layer;
//自定义验证规则
form .verify({
password: [/(.+){6,12}$/, '密码必须6到12位']
});
//监听提交
form.on ('submit(save)', 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() {
// 获得frame索引
var index = parent.layer.getFrameIndex(window.name);
//关闭当前frame
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);上面的$data只有admin的用户名和密码信息,并不包含is_update等字段信息,我将它改成这样://Session::set('user_id', $userName);Session::set('user_info', $admin);Bug消失。注:Base控制器也改一下:define('USER_ID', Session::get('user_info.id'));