iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 20
0

今天來摸索的是laravel Request 請求,一般請求指的是$_GET、$_POST...等,原生的php是自己使用$_GET、$_POST去取得表單或者ajax之類回傳的資料,並且使用isset來判別確保萬一沒收到值也不會有問題。

這方面也有許多框架延伸出對應的方式,減低開發者需要注意的事項,以我所知的是使用類似封裝的方式來做,白話來說就是把$_GET、$_POST…等請求打包起來,你需要就呼叫我打包後的class/function,我會吐回值/陣列給你,以防未宣告等相關事情我也幫你做好的概念。

取得所有的請求

$input = $request->all();

取得某個值
$name = $request->input('name');
從這裡可以看出,其實我們並不知道name是從GET還是POST來的,但我們就是能拿到!

給某個值預設值
$name = $request->input('name', 'Sally');
萬一沒有name,就幫我來個$name = sally

當處理表單input name[]時,存取input陣列方式

$remark= $request->input('remarks.0');
$remarks= $request->input('remarks');

只取某一部分的資料(陣列中的某個值)
$input = $request->only('username', 'password');

確認輸入的值是否存在

if ($request->has('name')) {
    //
}

實作:

來玩看看request,需要先到Route建立一下

Route::get("/login", "MemberController@loginForm")->name("loginForm");
Route::post("/login", "MemberController@loginProcess")->name("loginProcess");

之後來新增一個view
/resoucre/views /loginForm.blade.php。

<form action="{{ url("/login") }}" method="post">
{{ csrf_field() }}
使用者:<input type="text" name="username">
密碼:<input type="text" name="password">
備註1:<input type="text" name="remarks[]">
備註2:<input type="text" name=" remarks[] ">

<button type="submit">登入</button>
</form>

使用artisan建立一個Controller
php artisan make:controller MemberController

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
class MemberController extends Controller
{
    public function loginForm()
    {
        return view("loginForm");
    }
    
    public function loginProcess(Request $request)     {
        echo $request->input("username")."<br/>";
        echo $request->input("password")."<br/>";
		$remarks = $request->input('remarks');
		print_r($remarks);
		echo $remark = $request->input('remarks.0');
		print_r($input = $request->only('username', 'password'));
		print_r ($input = $request->all());

    }
}

輸入http://localhost:8000/login 玩看看

要注意的是$request回傳的是什麼型態,如果是陣列又使用echo的話,是會報錯的喔!!!!

今天這樣跑一次,我們也算實作了laravel簡單的表單傳遞以及取值的方式了,這樣也算是達成一個小應用囉!!!


上一篇
DAY19: factory
下一篇
DAY21: 蝦米是ORM?
系列文
從0開始-30天摸索laravel31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言