如何在 Laravel 7 中使用固定选项填充多个 Select
How to populate a Multiple Select with fixed option in Laravel 7
我有一个 edit.blade.php(用户个人资料),其中有多个 Select 应该显示固定选项。当我第一次编辑配置文件时,我收到错误消息。
错误:
Call to a member function toArray() on null (View: /Users/mnamazi/Sites/localhost/serresokhan/resources/views/panel/profile/edit.blade.php)
edit.blade.php :
<div class="col-xl-6">
<div class="form-group">
<label for="favorite">علاقمند شرکت در مسابقه</label>
<select name="favorite[]" class="form-control kt-selectpicker @error('favorite') is-invalid @enderror" multiple>
<option @if(in_array(1, $user->favorite)->toArray()) selected @endif value="1">گویندگی</option>
<option @if(in_array(2, $user->favorite)->toArray()) selected @endif value="2">اجرا</option>
<option @if(in_array(3, $user->favorite)->toArray()) selected @endif value="3">سخنوری</option>
</select>
@error('favorite')
<div class="invalid-feedback"> {{ $message }}</div>
@enderror
</div>
</div>
不确定 in_array
和 ->toArray()
的目的是什么,因为关于 favorite
是模型中的列还是关系的信息不多。
如果favorite
是users
table上的一列,那你可以试试
<div class="col-xl-6">
<div class="form-group">
<label for="favorite">علاقمند شرکت در مسابقه</label>
<select name="favorite[]" class="form-control kt-selectpicker @error('favorite') is-invalid @enderror" multiple>
<option @if($user->favorite == 1) selected @endif value="1">گویندگی</option>
<option @if($user->favorite == 2) selected @endif value="2">اجرا</option>
<option @if($user->favorite == 3) selected @endif value="3">سخنوری</option>
</select>
@error('favorite')
<div class="invalid-feedback"> {{ $message }}</div>
@enderror
</div>
</div>
但是如果是模型上的关系,那么
<div class="col-xl-6">
<div class="form-group">
<label for="favorite">علاقمند شرکت در مسابقه</label>
<select name="favorite[]" class="form-control kt-selectpicker @error('favorite') is-invalid @enderror" multiple>
<option @if($user->favorite->id == 1) selected @endif value="1">گویندگی</option>
<option @if($user->favorite->id == 2) selected @endif value="2">اجرا</option>
<option @if($user->favorite->id == 3) selected @endif value="3">سخنوری</option>
</select>
@error('favorite')
<div class="invalid-feedback"> {{ $message }}</div>
@enderror
</div>
</div>
根据你的评论,它是一个数组,你可以试试这个。
请确保您已将 favorite
转换为模型上的数组。
public class User extends Model
{
protected $casts = [
'favorite'=>'array',
];
}
完成此操作后,Laravel 会自动将 favorite
属性转换为数组,并且可以使用 in_array
.
在您的视图中访问
<div class="col-xl-6">
<div class="form-group">
<label for="favorite">علاقمند شرکت در مسابقه</label>
<select name="favorite[]" class="form-control kt-selectpicker @error('favorite') is-invalid @enderror" multiple>
<option @if(in_array(1,$user->favorite)) selected @endif value="1">گویندگی</option>
<option @if(in_array(2,$user->favorite)) selected @endif value="2">اجرا</option>
<option @if(in_array(3,$user->favorite)) selected @endif value="3">سخنوری</option>
</select>
@error('favorite')
<div class="invalid-feedback"> {{ $message }}</div>
@enderror
</div>
</div>
我将 select 的 name
更改为 favoriteMain
但出现此错误:
in_array() expects parameter 2 to be array, string given
我的代码是:
<div class="col-xl-4">
<div class="form-group">
<label for="favoriteMain">اصلی</label>
<select name="favoriteMain[]" class="form-control kt-selectpicker @error('favoriteMain') is-invalid @enderror" multiple>
<option @if(in_array(1,$user->favoriteMain)) selected @endif value="1">اجرای صحنه</option>
<option @if(in_array(2,$user->favoriteMain)) selected @endif value="2">اجرای تلوزیون</option>
<option @if(in_array(3,$user->favoriteMain)) selected @endif value="3">اجرای رادیویی - صدا</option>
<option @if(in_array(4,$user->favoriteMain)) selected @endif value="4">هم زبانان ( بین الملل )</option>
</select>
@error('favoriteMain')
<div class="invalid-feedback"> {{ $message }}</div>
@enderror
</div>
我有一个 edit.blade.php(用户个人资料),其中有多个 Select 应该显示固定选项。当我第一次编辑配置文件时,我收到错误消息。
错误:
Call to a member function toArray() on null (View: /Users/mnamazi/Sites/localhost/serresokhan/resources/views/panel/profile/edit.blade.php)
edit.blade.php :
<div class="col-xl-6">
<div class="form-group">
<label for="favorite">علاقمند شرکت در مسابقه</label>
<select name="favorite[]" class="form-control kt-selectpicker @error('favorite') is-invalid @enderror" multiple>
<option @if(in_array(1, $user->favorite)->toArray()) selected @endif value="1">گویندگی</option>
<option @if(in_array(2, $user->favorite)->toArray()) selected @endif value="2">اجرا</option>
<option @if(in_array(3, $user->favorite)->toArray()) selected @endif value="3">سخنوری</option>
</select>
@error('favorite')
<div class="invalid-feedback"> {{ $message }}</div>
@enderror
</div>
</div>
不确定 in_array
和 ->toArray()
的目的是什么,因为关于 favorite
是模型中的列还是关系的信息不多。
如果favorite
是users
table上的一列,那你可以试试
<div class="col-xl-6">
<div class="form-group">
<label for="favorite">علاقمند شرکت در مسابقه</label>
<select name="favorite[]" class="form-control kt-selectpicker @error('favorite') is-invalid @enderror" multiple>
<option @if($user->favorite == 1) selected @endif value="1">گویندگی</option>
<option @if($user->favorite == 2) selected @endif value="2">اجرا</option>
<option @if($user->favorite == 3) selected @endif value="3">سخنوری</option>
</select>
@error('favorite')
<div class="invalid-feedback"> {{ $message }}</div>
@enderror
</div>
</div>
但是如果是模型上的关系,那么
<div class="col-xl-6">
<div class="form-group">
<label for="favorite">علاقمند شرکت در مسابقه</label>
<select name="favorite[]" class="form-control kt-selectpicker @error('favorite') is-invalid @enderror" multiple>
<option @if($user->favorite->id == 1) selected @endif value="1">گویندگی</option>
<option @if($user->favorite->id == 2) selected @endif value="2">اجرا</option>
<option @if($user->favorite->id == 3) selected @endif value="3">سخنوری</option>
</select>
@error('favorite')
<div class="invalid-feedback"> {{ $message }}</div>
@enderror
</div>
</div>
根据你的评论,它是一个数组,你可以试试这个。
请确保您已将 favorite
转换为模型上的数组。
public class User extends Model
{
protected $casts = [
'favorite'=>'array',
];
}
完成此操作后,Laravel 会自动将 favorite
属性转换为数组,并且可以使用 in_array
.
<div class="col-xl-6">
<div class="form-group">
<label for="favorite">علاقمند شرکت در مسابقه</label>
<select name="favorite[]" class="form-control kt-selectpicker @error('favorite') is-invalid @enderror" multiple>
<option @if(in_array(1,$user->favorite)) selected @endif value="1">گویندگی</option>
<option @if(in_array(2,$user->favorite)) selected @endif value="2">اجرا</option>
<option @if(in_array(3,$user->favorite)) selected @endif value="3">سخنوری</option>
</select>
@error('favorite')
<div class="invalid-feedback"> {{ $message }}</div>
@enderror
</div>
</div>
我将 select 的 name
更改为 favoriteMain
但出现此错误:
in_array() expects parameter 2 to be array, string given
我的代码是:
<div class="col-xl-4">
<div class="form-group">
<label for="favoriteMain">اصلی</label>
<select name="favoriteMain[]" class="form-control kt-selectpicker @error('favoriteMain') is-invalid @enderror" multiple>
<option @if(in_array(1,$user->favoriteMain)) selected @endif value="1">اجرای صحنه</option>
<option @if(in_array(2,$user->favoriteMain)) selected @endif value="2">اجرای تلوزیون</option>
<option @if(in_array(3,$user->favoriteMain)) selected @endif value="3">اجرای رادیویی - صدا</option>
<option @if(in_array(4,$user->favoriteMain)) selected @endif value="4">هم زبانان ( بین الملل )</option>
</select>
@error('favoriteMain')
<div class="invalid-feedback"> {{ $message }}</div>
@enderror
</div>