Day5 跟着官方文件学习Laravel-把Request丢给Controller去处理

回顾一下昨天,我们已经能透过route+view让登入页面显示在画面上了,今天的任务呢,就是要把登入页经由form表单传送的值,送给後端让Controller能接到Request传的值。

在昨天的login.blade.php中我们的html长这样,这时我们在form表单中加上@csrf保护

#login.blade.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>login</title>
</head>
<body>
    <h1>登入画面</h1>
    <form action='/login' method='POST'>
        @csrf
        帐号:<input type='text' name='account'><br/>
        密码:<input type='password' name='password'><br/>
        <button type='submit'>登入</button>
    </form>
</body>
</html>

偷偷按下f12可以看到多了一个_token,帮我们验证身份

我们要来实作一个route能够导到controller,因为我们只有一个方法,所以我们就用__invoke实作就可以了。app/Http/Controllers在这生成档案吧

<?php

namespace App\Http\Controllers;

class LoginController extends Controller
{
    public function __invoke(){

    }
}

好了,现在我们档案建好後,我们要让form表单的资讯能够送到这个controller,我们必须透过路由帮我们连接。所以我们在routes/web.php中加上一个路由,传到哪边呢,要看我们的form的action以及他的传送方法method决定我们的路由怎麽接,而我们的表单设计的路径是/login,方法是post,了解後就动工罗

Route::post('/login', LoginController::class);

若你的controller有多个方法可以用array传递,後面放你要接收的方法名称

Route::get('/user/{id}', [UserController::class, 'show']);

道路都建好了,不过我们怎麽在controller中获取request呢?这边官方提供一个方法,就是直接在方法上传递一个参数$request,laravel就会自动透过依赖注入的方式透过service provider注入:

class LoginController extends Controller
{
    public function __invoke(Request $request){
        dd($request);
    }
}

我们试着把它印出来吧,回到登入页,我们打上帐号密码後送出
接着画面会显示出你这次请求的一些资讯,其中包含parameters
里面有记录着打入的帐号密码以及刚刚看到的_token值,用来做CSRF保护

好,接着我们试着回传一些资讯,利用$request->input()的话可以取得所有传入的值,我们如果想把我们传入的帐号印出来,可以用 $request->input('account')取得值

class LoginController extends Controller
{
    public function __invoke(Request $request){
        return "你好,我的帐号是".$request->input('account');
    }
}

接着,我们再重新打一次帐号密码按下登入,就会成功回传值啦!

我们今天的任务达成,让controller成功接到我们想要传的值,接着明天要学习如何使用DB,先进行设定,在本机弄出一个DB来用。


<<:  Day4 让我们来 Build 出自己的 NiFi 服务吧

>>:  [Day11] swift & kotlin 实作篇!(2) 建立专案

Progressive Web App Checklist: 优化检核清单项目说明 (7)

Starts fast, stays fast Web App 的效能会直接影响使用者体验,也会影响...

Day 1 (html)

1.版本 但是遇到旧的也不要更改,因为可能别人版本还没这麽新 <!DOCTYPE html&g...

Day 6. Hashicorp Nomad: Submit a Job

Hashicorp Nomad: Submit a Job 今天来写最基本的提交工作(Submit ...

汇入大量资料到 docker 上的资料库:mysql-client

前言 想透过 phpMyAdmin 把正式机资料拉下来,汇入本机 docker 上的资料库做开发;但...

模型初始化方法问题

在建立模型中有一项权重初始化方法,我看过有人这样写kernel_initializer='norma...