[Day 43] 心情随笔後台及前台(五) - 编辑心情随笔资料画面及动作

接下来要处理的是编辑的画面,
我们看一下昨天这个画面
https://ithelp.ithome.com.tw/upload/images/20210425/20105694Zc7Lz50GtU.png
右边有一个修改的按钮,
点下去之後就可以针对这一则心情随笔进行修改,
我们要在 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');    
}

这样子就完成修改的动作,
同样修改完右上角会出现提示(这动作之前就写好了)
https://ithelp.ithome.com.tw/upload/images/20210425/20105694pTdEKLlOHc.png


<<:  常见攻击(Common Attacks)

>>:  劫持用户会话(hijack user sessions)

Day#13 登入画面(2)

前言 昨天成功的放上imageView以及标题,今天来把其他的栏位放上~ 登入栏位 LoginVie...

#5 Python进阶教学2

类别 类别里封装了变数和函数 被封装在类别里的变数称为属性 被封装在类别里的函数称为方法(方式、功能...

Day-30 完赛心得

经过了漫长的30天,终於完赛了,好险暑假有先屯个15篇,要不应该是没办法完赛了,由衷地佩服那些真的每...

Day05-Kubernetes 那些事 -基本观念与操作

前言 接下来就正式进入本系列文的重头戏:Kubernetes,Kubernetes 可以说是近期快速...

Day18 - this&Object Prototypes Ch3 Objects - Iteration 开头

var myArr = ['燃面', '生菜', '花椒']; myArr.a = '雉鸡'; //...