接下来要处理的是编辑的画面,
我们看一下昨天这个画面
右边有一个修改
的按钮,
点下去之后就可以针对这一则心情随笔进行修改,
我们要在 app/Http/Controllers/AdminController.php 新增一个editMindPage方法,
修改的部分跟新增很像,
因为我们用的是同一个画面
可以把addMinPage複製过来再改一下就可以,
我们这里会用到一个参数mind_id,
这个参数写在 routes/web.php
Route::group(['prefix' => '{mind_id}'], function(){
然后我们开始写editMindPage方法,
我们要取得我们要的心情随笔Mind资料,
首先我们要验证有这笔资料(id)存在,
然后我们再验证这笔资料是属于这个使用者的(user_id),
总不能编辑别的使用者的资料吧,
如果找不到资料就转回列表页,
我们写editMindPage如下:
//编辑心情随笔资料function editMindPage($mind_id){ Log::notice('新增心情随笔资料'); //先取得自己的资料 $User = $this->GetUserData(); //取得心情随笔列表 $Mind = Mind::where('id', $mind_id)->where('user_id', $User->id)->first(); if(!$Mind) { //如果找不到资料就回列表页 return redirect('/admin/mind'); } $name = 'mind'; $action = '修改'; $binding = [ 'title' => ShareData::TITLE, 'page' => $this->page, 'name' => $name, 'User' => $User, 'Mind' => $Mind, 'action' => $action, 'result' => '', ]; return view('admin.mind', $binding);}
画面的部分之前已经写好,
所以问题不大,
再来就是要处理POST的部分,
也就是修改完资料之后的处理.
(即使没修改我们也当成已修改来处理)
我们在 editMindProcess 方法加上编辑的处理如下:
//编辑心情随笔的动作function editMindProcess(){ Log::notice('处理心情随笔资料'); $User = $this->GetUserData(); if(!$User) { Log::notice('找不到使用者'); //如果找不到使用者,就回到首页 return redirect('/'); } $name = 'mind'; //接收输入资料 $input = request()->all(); //验证规则 $rules = [ //内容 'content' => [ 'required', 'max:400' ], ]; //验证资料 $validator = Validator::make($input, $rules); if($input['id'] == '') { //新增 $action = '新增'; $Mind = new Mind; $Mind->content = $input['content']; } else { //修改 $action = '修改'; //取得心情随笔列表 $Mind = Mind::where('id', $input['id'])->where('user_id', $User->id)->first(); if(!$Mind) { //如果找不到资料就回列表页 return redirect('/admin/mind'); } $Mind->content = $input['content']; } if($validator->fails()) { $binding = [ 'title' => ShareData::TITLE, 'page' => $this->page, 'name' => $name, 'User' => $User, 'Mind' => $Mind, 'action' => $action, 'result' => '', ]; return view('admin.mind', $binding) ->withErrors($validator); } if($input['id'] == '') { //新增 $input["user_id"] = $User->id; $input["enabled"] = 1; Mind::create($input); } else { //修改 $Mind->save(); } //成功就转回列表页 return redirect('/admin/mind/?result=success'); }
这样子就完成修改的动作,
同样修改完右上角会出现提示(这动作之前就写好了)