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

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

在 Laravel 5.8 中提交后,使用 @error 指令從多個輸入字段中定位前一個輸入字段

在 Laravel 5.8 中提交后,使用 @error 指令從多個輸入字段中定位前一個輸入字段

PHP
撒科打諢 2022-01-14 16:57:22
Laravel 5.8.13中引入了新的 @error 指令。所以,而不是這樣做:// old@if ($errors->has('email'))     <span>{{ $errors->first('email') }}</span> @endif您現(xiàn)在可以執(zhí)行此操作// new@error('email')     <span>{{ $message }}</span> @enderror但是,我在嘗試僅針對幾個類似輸入字段中出現(xiàn)錯誤的輸入字段時遇到問題。這些字段是相似的,因為它們具有相同的名稱。但它們也采用不同的形式,并具有不同的提交按鈕。我的 html 刀片文件設(shè)置有從@forelse語句生成的多個輸入。我創(chuàng)建了一個簡單的錯誤檢查來檢查是否輸入了負(fù)數(shù)并重定向回帶有錯誤消息的同一頁面。該@error指令還用于將自定義類插入到目標(biāo)輸入字段以進(jìn)行樣式設(shè)置。@forelse($accounts as $account)    <form method="POST" action="{{ route('account.update', $account->id) }}">        @csrf        <div>            <input type="number" name="credit" class="@error('credit') is-invalid @enderror" required>            <input type="submit" class="btn" value="ok">            @error('credit')                <span class="invalid-feedback" role="alert">                    <strong>{{ $message }}</strong>                </span>            @enderror        </div>    </form>@empty@endforelse表單提交給update()方法AccountController.phppublic function update(Request $request, Account $account){    if($request->input('credit') < 0)    {        return back()->withErrors(['credit'=>'enter a positive amount']);    }    // ... other logic}問題是,當(dāng)在一個輸入字段中輸入負(fù)數(shù)時,錯誤消息會針對每個具有相同名稱的輸入顯示,即使它們的形式不同也是如此。我認(rèn)為使輸入名稱唯一可以解決這個問題,但這會使我的后端邏輯比所需的更復(fù)雜。無論如何,在重定向后只為目標(biāo)輸入顯示錯誤消息,而不必為每個輸入字段使用唯一名稱?
查看完整描述

2 回答

?
哈士奇WWW

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

有趣的是,該 @error 指令沒有通過輸入名稱以編程方式綁定到任何輸入字段。它僅通過接近度與輸入字段在空間上相關(guān),并且可以放置在頁面上的任何位置。


@error此外,只要將相同的字符串傳遞給withErrors()控制器中的調(diào)用,您就可以方便地使用指令中的任何字符串。


因此,解決在多個輸入中定位適當(dāng)輸入的問題變得像使用任何唯一字符串(不一定是目標(biāo)輸入名稱)作為withErrors()方法調(diào)用中的鍵并通過將相同的字符串傳遞給@error指令來檢索錯誤消息一樣簡單。就我而言,我選擇使用帳戶 ID 作為唯一字符串。


在AccountController.php:


public function update(Request $request, Account $account)

{

    if($request->input('credit') < 0)

    {

        return back()->withErrors([$account->id=>'enter a positive amount']);

    }

    // ... other logic

}

在 html 刀片模板中:


@forelse($accounts as $account)

    <form method="POST" action="{{ route('account.update', $account->id) }}">

        @csrf

        <div>

            <input type="number" name="credit" class="@error($account->id) is-invalid @enderror" required>

            <input type="submit" class="btn" value="ok">

            @error($account->id)

                <span class="invalid-feedback" role="alert">

                    <strong>{{ $message }}</strong>

                </span>

            @enderror

        </div>

    </form>

@empty

@endforelse

注意:在任何指令中使用不存在的鍵@error會破壞其他 @error 指令的代碼,并且不會導(dǎo)致顯示錯誤消息。


查看完整回答
反對 回復(fù) 2022-01-14
?
守著星空守著你

TA貢獻(xiàn)1799條經(jīng)驗 獲得超8個贊

解決方案將執(zhí)行以下操作:

  • 使用提交按鈕的值將值/發(fā)布的表單存儲在變量中

  • 放棄錯誤指令并使用舊版本

  • 將舊版本與變量結(jié)合起來檢查你是否有正確的形式

你會得到這樣的東西:

@if ($errors->has('email') && $submitted_form_identifier === $form_identifier) 

    <span>{{ $errors->first('email') }}</span> 

@endif


查看完整回答
反對 回復(fù) 2022-01-14
  • 2 回答
  • 0 關(guān)注
  • 310 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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