第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

不想編輯存儲(chǔ)和更新功能中使用的特定字段

不想編輯存儲(chǔ)和更新功能中使用的特定字段

PHP
精慕HU 2023-09-22 14:36:22
產(chǎn)品控制器public function store(){    $product = Product::create($this->validateRequest());    return redirect('/product');}public function update(Product $product){    $product->update($this->validateRequest());    return redirect('/product');}private function validateRequest(){    return request()->validate([        'sub_category_id' => ['required'],        'name' => ['required', 'min:4'],        'code' => ['required', 'alpha_dash','unique:products'],        'description' => ['required', 'min:4'],        'color' => ['required', 'min:3'],        'price' => ['required', 'integer'],    ]);}這里的代碼與表產(chǎn)品相比具有獨(dú)特的價(jià)值。但每當(dāng)我編輯表單時(shí),它都會(huì)說(shuō)代碼已被采用。那么如何在不編輯“代碼”的情況下執(zhí)行此操作(其獨(dú)特)。
查看完整描述

3 回答

?
30秒到達(dá)戰(zhàn)場(chǎng)

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊

您可以在唯一檢查期間忽略某些 ID:


use Illuminate\Validation\Rule;


public function store()

{

    Product::create($this->validateRequest(new Product()));


    return redirect('/product');

}


public function update(Product $product)

{

    $product->update($this->validateRequest($product));


    return redirect('/product');

}


private function validateRequest(Product $product)

{

    return request()->validate([

        'sub_category_id' => ['required'],

        'name' => ['required', 'min:4'],

        'code' => ['required', 'alpha_dash', Rule::unique('products')->ignore($product)],

        'description' => ['required', 'min:4'],

        'color' => ['required', 'min:3'],

        'price' => ['required', 'integer'],

    ]);

}

在這里,您要么在更新時(shí)傳遞現(xiàn)有模型,要么在存儲(chǔ)時(shí)傳遞新的模型實(shí)例,因此在存儲(chǔ)新產(chǎn)品時(shí)$product->id返回調(diào)用,這樣數(shù)據(jù)庫(kù)中的任何產(chǎn)品都不會(huì)被忽略,或者在更新時(shí)傳遞 id,然后僅忽略該產(chǎn)品。null


來(lái)自文檔:


強(qiáng)制唯一規(guī)則忽略給定 ID:


有時(shí),您可能希望在唯一檢查期間忽略給定的 ID。例如,考慮一個(gè)“更新個(gè)人資料”屏幕,其中包括用戶的姓名、電子郵件地址和位置。您可能需要驗(yàn)證電子郵件地址是否唯一。但是,如果用戶僅更改名稱(chēng)字段而不更改電子郵件字段,則您不希望引發(fā)驗(yàn)證錯(cuò)誤,因?yàn)樵撚脩粢呀?jīng)是電子郵件地址的所有者。


為了指示驗(yàn)證器忽略用戶的 ID,我們將使用該類(lèi)Rule 來(lái)流暢地定義規(guī)則。在此示例中,我們還將驗(yàn)證規(guī)則指定為數(shù)組,而不是使用 | 分隔規(guī)則的字符:


use Illuminate\Validation\Rule;


Validator::make($data, [

    'email' => [

        'required',

        Rule::unique('users')->ignore($user->id),

    ],

]);

但請(qǐng)注意以下幾點(diǎn):


您永遠(yuǎn)不應(yīng)該將任何用戶控制的請(qǐng)求輸入傳遞到忽略方法中。相反,您應(yīng)該只傳遞系統(tǒng)生成的唯一 ID,例如來(lái)自 Eloquent 模型實(shí)例的自動(dòng)遞增 ID 或 UUID。否則,您的應(yīng)用程序?qū)⑷菀资艿?SQL 注入攻擊。


查看完整回答
反對(duì) 回復(fù) 2023-09-22
?
慕神8447489

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊

所以這里的問(wèn)題是您使用相同的規(guī)則來(lái)創(chuàng)建產(chǎn)品和更新產(chǎn)品。


如果您使用的是最新的 Laravel,您可能需要閱讀有關(guān)表單請(qǐng)求的文檔https://laravel.com/docs/7.x/validation#form-request-validation并創(chuàng)建不同的表單請(qǐng)求以進(jìn)行存儲(chǔ)和更新。


如果你還想用你的方式,你可以嘗試如下


private function validateRequest()

{

    $rules = [

        'sub_category_id' => ['required'],

        'name' => ['required', 'min:4'],

        'description' => ['required', 'min:4'],

        'color' => ['required', 'min:3'],

        'price' => ['required', 'integer'],

    ];

    

    if (request()->isMethod('store')) {

        $rules['code'] = ['required', 'alpha_dash'];

    }


    return request()->validate($rules);

}

請(qǐng)告訴我是否有效!


查看完整回答
反對(duì) 回復(fù) 2023-09-22
?
慕田峪7331174

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個(gè)贊

試試這個(gè),正確且干凈的代碼


產(chǎn)品控制器


use Illuminate\Validation\Rule; // add this


public function store()

{

? ? $product = Product::create($this->validateRequest());


? ? return redirect('/product'); //use route instead of URL

}


public function update(Product $product)

{

? ? $product->update($this->validateRequest($product->id));


? ? return redirect('/product'); //use route instead of URL

}


private function validateRequest($id = null)

{

? ? return request()->validate([

? ? ? ? 'sub_category_id' => 'required',

? ? ? ? 'name' => 'required|min:4',

? ? ? ? 'code' => 'required|alpha_dash|' . Rule::unique('products')->ignore($id),

? ? ? ? 'description' => 'required|min:4',

? ? ? ? 'color' => 'required|min:3',

? ? ? ? 'price' => 'required|integer',

? ? ]);

}

建議使用Form請(qǐng)求驗(yàn)證


查看完整回答
反對(duì) 回復(fù) 2023-09-22
  • 3 回答
  • 0 關(guān)注
  • 145 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)