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

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

自定義請求驗證錯誤后獲取表單上的舊值或用戶變量值,使用兩種不同的表單進行查看

自定義請求驗證錯誤后獲取表單上的舊值或用戶變量值,使用兩種不同的表單進行查看

PHP
蠱毒傳說 2024-01-19 17:25:07
編輯:您的解決方案適用于文本輸入和文本區域,但復選框對我來說無法正常工作。這是我原來的復選框:{{ Form::checkbox('active', true, (isset($user->active)) ? old($user->active) : true, ['class' => 'custom-control-input', 'id' => 'active']) }}我已經嘗試了很多可能的解決方案,例如添加old('active', isset($user) ? $user->active: true),但是當發生錯誤時,我會丟失此輸入中的值。在控制器上,我正在檢查這一點,但是如果我將輸入更改為“新解決方案”,則在我的數據庫上活動始終為 false:if(!array_key_exists('active', $validated)){    $validated = array_add($validated, 'active', '0');}原始問題(部分解決):我有一個刀片視圖調用編輯兩種形式 ,但每個形式都調用自己的方法/路線。一種表單用于編輯/存儲用戶,另一種表單是模式中的用于更改用戶密碼的表單。當我更改密碼并且沒有發生驗證錯誤時,另一個表單仍然具有通過索引方法從old()或 $user 變量獲取的所有值。但是,例如,如果密碼不匹配,則會發生驗證錯誤,并且編輯/存儲用戶表單中的值會消失。表單非常簡單(請記住,它們位于同一視圖上,給我帶來問題的是編輯/創建表單),并且每個表單都從UserController調用不同的方法編輯用戶表格1(簡化)@if($user->exists)    {{ Form::model($user, ['route' => ['users.update', $user], 'class' => 'needs-validation', 'novalidate'=>'']) }}    @method('PATCH')@else    {{ Form::model($user, ['route' => ['users.store'], 'class' => 'needs-validation', 'novalidate'=>'']) }}    @method('POST')@endif@csrf<div class="form-group"><div class="row">    <div class="col-sm-4">        {{ Form::label('cif', __('users.cif'), ['class' => 'form-label']) }}        {{ Form::text('cif', (isset($user->cif)) ? old($user->cif) : '', ['class' => 'form-control', 'required','maxlength'=>'12', 'minlength'=>'9']) }}        {{ Form::hidden('validate','', ['class' => 'form-control', 'required', 'id'=>'validate']) }}    </div>    <div class="col-sm-6">        {{ Form::label('name', __('users.name'), ['class' => 'form-label']) }}        {{ Form::text('name', (isset($user->name)) ? old($user->name) : '', ['class' => 'form-control','required','maxlength'=>'255']) }}    </div>    <div class="col-sm-2">        {{ Form::label('initials', __('users.initials'), ['class' => 'form-label']) }}        {{ Form::text('initials', (isset($user->initials)) ? old($user->initials) : '', ['class' => 'form-control', 'required','maxlength'=>'5']) }}    </div></div>
查看完整描述

2 回答

?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

舊值來自輸入名稱


<input type="text" name="input" value="{{old('input')}}"

例子


<div class="col-sm-4">

  {{ Form::label('cif', __('users.cif'), ['class' => 'form-label']) }}

  {{ Form::text('cif', old('cif', $user->cif ?? ''), ['class' => 'form-control', 'required','maxlength'=>'12', 'minlength'=>'9']) }}

  {{ Form::hidden('validate','', ['class' => 'form-control', 'required', 'id'=>'validate']) }}

</div>

//$user->cif ?? '' <- left or right hand-side operand, return right-hand if left is null or undefined

//old('input', $user->cif ?? '') <- if old input available, use old input, if not, $user will be displayed

形式::復選框:

  1. 第一個參數:名稱

  2. 第二個參數:值

  3. 第三個參數:檢查或未檢查(true 或 false)

  4. 第四個參數:附加屬性

請注意,值是屬性(值),檢查是屬性(檢查)然后

{{ Form::checkbox('active', true, (isset($user->active)) ? $user->active : true, ['class' => 'custom-control-input', 'id' => 'active']) }}

//2nd parameter (true) will always set checkbox value to 1(true)

//(isset($user->active)) ? $user->active : true <- will set default to true (checked) if $user is null or undefined

//maybe try

{{ Form::checkbox('active', $user->active ?? false, $user->active ?? false) }}

//if $user != null, put $user->active else put false

//if $user != null, set checked value based on $user->active else put false

在 html 中看起來像這樣


<input type="checkbox" value="1" checked="checked">

那么你需要onchange="$(this).is(':checked') ? $(this).val(1) : $(this).val(0);"在 form::checkbox 的第四個參數中添加內聯事件來更改運行時的默認值


查看完整回答
反對 回復 2024-01-19
?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

如果我理解正確的話,你應該這樣做:

old('name',?isset($user)???$user->name?:?''),

在這里,您嘗試獲取舊name輸入,如果它不存在,則在第二個參數 odold函數中您將獲得默認值,如果用戶存在,則該值是用戶名

查看完整回答
反對 回復 2024-01-19
  • 2 回答
  • 0 關注
  • 208 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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