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;
//自定義驗證規(guī)則
form .verify({
password: [/(.+){6,12}$/, '密碼必須6到12位']
});
//監(jiān)聽提交
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);
//關(guān)閉當(dāng)前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'));