亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

拉拉維爾驗證的最佳實踐

拉拉維爾驗證的最佳實踐

PHP
陪伴而非守候 2022-09-12 13:04:20
我創建新表單請求并將其用于所有 CRUD 操作并用于檢查請求之間的差異$this->getMethod();然后我面臨邏輯問題在更新方法中,存儲方法中所需的所有字段是否都應該是必需的?=>這里的問題是API的消費者是否應該發送所有密鑰對象來更新特定密鑰如果不應該,并且從 API 發送的鍵名稱與數據庫表列名稱不同=>我不能使用,因為鍵與列名不同,那么我需要循環所有請求鍵以忽略具有null的鍵 - 也可以通過多重檢查來完成update($request()->all()); -那么請問最佳實踐是什么?
查看完整描述

3 回答

?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

在拉拉維爾中,有許多方法可以驗證數據。


我更喜歡的不是在控制器中編寫驗證檢查并將其寫入單獨的表單請求,并將該請求對象用作參數。


假設我們有一個用戶模型,并且需要一個名稱和控制器的唯一in和方法,你可以簡單地使用對象,如下所述。storeupdateUserRequest


創建表單請求類

php artisan make:request UserRequest

class UserRequeset extends Request

{

    /**

     * Get the validation rules that apply to the request.

     *

     * @return array

     */

    public function rules()

    {

        $id = request('id') ?: 'NULL'; // To identify if a request is for store or update just take autoincremented id parameter from request


         return [

             'name' => "required|unique:users,name,$id"

         ];



        // You can also customize your validation for different methods as below


        switch ($this->method()) {

            case 'POST':

                return [

                    // validation for post method

                ];

            break;

            case 'PUT':

                return [

                    // validation for put method

                ];

            break;

            default:

                return [];

            break;

        }


    }


    public function messages()

    {

        return [

            "name.required" => "User name is required",

            "name.unique" => "User name should be unique"


            // or you can customize this using language


            "name.required" => __("user.required_message"),

            "name.unique" => __("user.unique_message")

        ];

    }

}

在UserController

use App\Http\Requests\UserRequest;


class UserController extends Controller

{

    public function store(UserRequest $request)

    {

        // Enter your code just after validation part no need of any validation code here

    }

    public function update(UserRequest $request)

    {

        // Enter your update code just after validation part no need of any validation code here

    }

}


查看完整回答
反對 回復 2022-09-12
?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

您可以使用以下方法執行此操作:


$this->validate(

    $request,

    [

        'YOUR INPUT FIELD NAME' => 'required',

    ]

);

你也可以使用自拉威爾5.5+:$request->validate()


$request->validate(

    [

        'YOUR INPUT FIELD NAME' => 'required',

    ]

);


查看完整回答
反對 回復 2022-09-12
?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

$validator = Validator::make($request->all(), [

    'phone' => 'sometimes|max:255',

    'name' => 'required|string|max:255',

    'email' => 'required|string|email|max:255',

    'pic_file' => 'sometimes|mimes:jpg,png,jpeg,gif|max:1000',

]);


if ($validator->fails()) {

    return redirect('/')->withErrors($validator);

}


查看完整回答
反對 回復 2022-09-12
  • 3 回答
  • 0 關注
  • 85 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號