在我的 laravel 應用程式中,我有一個帶有下拉選單的簡單表單。
下拉選項充滿了資料庫資料。
我想用用戶先前在編輯中選擇的選項填充我的下拉串列。
以下是我到目前為止所做的..
刀
<select name="company_id" class="form-control">
@foreach($companies as $company)
@if (old('company_id') == $employee->company_id)
<option value="{{ $company->id }}" selected>{{ $company->name }}</option>
@else
<option value="{{ $company->id }}">{{ $company->name }}</option>
@endif
@endforeach
</select>
控制器。
public function edit(Employee $employee)
{
$companies = Company::all(['id','name']);
return view('employees.edit', compact('employee','companies'));
}
員工模型
{
use HasFactory, Notifiable;
protected $fillable = [
'first_name', 'last_name', 'email', 'phone', 'company_id'
];
public function company()
{
return $this->belongsTo(Company::class);
}
}
我的公司表結構

員工表結構

當我嘗試使用這些時,它不斷向我顯示編輯下拉串列中的值,但沒有正確設定舊值.....
uj5u.com熱心網友回復:
試試這個作為你的回圈:
@foreach ($companies as $company)
<option value="{{ $company->id }}" {{ $company->id == old('company_id') ? 'selected' : '' }}>
{{ $company->name_en }}</option>
@endforeach
uj5u.com熱心網友回復:
原因可能是typecasting。
@if (old('company_id') === $employee->company_id)
這永遠不會是真的。您會看到old包含字串值,并且您正在將其與 id 型別的 id 進行比較int。所以,這對你有用:
@if ( (int)old('company_id') === $employee->company_id )
此外,您可以使用一個新指令來代替傳統的 if-else 陳述句checked:
@checked( old('key', $employee->key) )
@selected( old('key') === $employee->key )
uj5u.com熱心網友回復:
在 Laravel 9 中,您不必使用刀片功能/指令if-else來檢查值。@selected()
<select name="company_id" class="form-control">
@foreach($companies as $company)
<option value="{{ $company->id }}" @selected(old('company_id') == $company->id)>{{ $company->name }}</option>
@endforeach
</select>
此外,我們還具有以下@checked()功能:
<input type="checkbox" name="active" value="active" @checked(old('active', $user->active)) />
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/515802.html
標籤:php拉拉维尔
