Zhu 先生のビデオ「ThinkPHP5 Rapid Development of Enterprise Sites」に従ってコードを作成します。admin_edit ページを実行すると、「未定義の配列インデックス: is_update」エラーが表示されます。解決方法がわかりません。助けを求めてください。ありがとう!
Admin.php コントローラー コード:
//更新操作の実行
public function update(Request $request)
{
if ($request->isAjax(true)) {
//送信されたデータを取得し、null 値を自動的に除外します
$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="layui-form-item">
<label for="L_pass" class="layui-form-label">
<span class="x-red">*</span>新秘密
</label>
<div class="layui-input-inline ">
<input type="パスワード" id="パスワード" name="パスワード" required=""lay-verify="パスワード" autocomplete="off" class="layui-input"
value="123456" placeholder="密码">
</div>
<div class="layui-form-midlayui-word- aux">
6to12 文字
</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",
成功: 関数 (データ) {
if (data.status == 1) {
layer.msg(JSON.stringify(data.message), {icon:6,time :2000}, function() {
//取得フレームインデックス
varindex =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::set('user_id', $userName);Session::set('user_info', $data);上記の $data は、admin のユーザー名とパスワードの情報のみであり、is_update などのフィールド情報は含まれていません。 //Session::set('user_id', $userName);Session::set('user_info) に変更しました。 '、$admin); バグは消えます。注: Base コントローラーも変更します。define('USER_ID', Session::get('user_info.id'));