ホームページ  >  に質問  >  本文

未定義の配列インデックス: is_update

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="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 ="ユーザー名" name="ユーザー名" required=""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>メール

</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-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="パスワード" 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>



流金岁月流金岁月2338日前1444

全員に返信(2)返信します

  • 流金岁月

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

    エラーの原因は次のとおりです。ログイン時にセッションを保存するコードは次のとおりです。 //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'));

    返事
    1
  • ringa_lee

    幸いなことに、その理由がわかりました。そうでなければ、このコードを読むのに長い時間を費やしていたことでしょう。

    ringa_lee · 2018-06-18 21:50:07
  • キャンセル返事