接下來要處理的是編輯的畫面,
我們看一下昨天這個畫面
右邊有一個修改
的按鈕,
點下去之後就可以針對這一則心情隨筆進行修改,
我們要在 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');
}
這樣子就完成修改的動作,
同樣修改完右上角會出現提示(這動作之前就寫好了)