显示数组数据时为 foreach() 提供的参数无效
Invalid argument supplied for foreach() When show array data
数据插入数组成功,但显示时没有出现。我需要它来显示嵌套的 foreach 循环。其他数据显示但阵列数据没有。我有一些工作 post 并且一些工作可能属于某些工作行业(类别如会计、金融)。在哪里改变它来解决这个问题我找不到它。我已经尝试了所有可能的解决方案。
我想展示一份多类别/行业的工作。数组插入是
["2","4","5"]
但它不显示,如果值像这样 2(number) 那么它就可以显示了。 “Print_r($allJobs)”也只显示第二个数据而不是数组。
这是我的控制器:
public function index(){
$allJobs = DB::table('jobs')
->join('companies','companies.id','=','jobs.comp_id')
->join('job_industries','job_industries.id','=','jobs.industry_id')
->join('job_types','job_types.id','=','jobs.job_type_id')
->join('districts','districts.id','=','jobs.district')
->where('jobs.status','=',1)
->select('jobs.*','companies.company_name','job_types.job_type','job_industries.industry_name','districts.name as disName')
->orderBy('jobs.id','desc')
->paginate(10);
return view('backEnd.job.jobList',['allJobs' => $allJobs]);
}
我的模特:
class Job extends Model
{
protected $fillable = [
'comp_id', 'emp_id', 'industry_id','job_type_id','title','vacancy','job_context','responsibility','requirement','salary','add_info',
'edu_requirement', 'experience','facility','division','district','app_info','deadline','image','status'
];
protected $casts = [
'industry_id' => 'array',
];
public function getDataAttribute($value)
{
return json_decode($value, true);
}
}
我的看法:
@php
$i =1;
@endphp
@foreach($allJobs as $allJob)
<tr>
<td>{{$i++}}</td>
<td>{{$allJob->title}}</td>
<td>{{$allJob->job_type}}</td>
<td>
@if (is_array($allJob) || is_object($allJob)){
@foreach(json_decode($allJob->industry_id, true) as $key => $value)
{{ $loop->parent->first ? '' : ', ' }}
<span><strong>{{ $value }}</strong></span>
@endforeach
@endif
</td>
<td>{{$allJob->company_name}}</td>
<td>{{$allJob->disName}}</td>
<td>{{$allJob->deadline}}</td>
</td>
</tr>
@endforeach
<form role="form" method="post" onsubmit="return validateForm('addsstatus')" class="addsstatus" action="{{url('admin-user/variante')}}" autocomplete="off" enctype="multipart/form-data">
@csrf
<div class="box-body">
<div class="last_row" id="criteria1">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="">Variante Type</label>
<select class="form-control select2 " name="variante_type_id" style="width: 100%;" id="variante_type_id">
<option value="">--Select --</option>
@foreach($varianteType as $varianteTypes)
<option value="{{$varianteTypes->id}}" >{{$varianteTypes->name}}</option>>
@endforeach
</select>
</div>
@error('variante_type_id')
<div class="alert">{{ $message }}</div>
@enderror
</div>
<div class="col-md-6">
<div class="form-group">
<label for="">Variente Name<span class="require label-mandatory">*</span></label>
<input type="text" name="name" id="name" value="" class="form-control input-mandatory" placeholder="Enter Variente Name">
</div>
@error('name')
<div class="alert">{{ $message }}</div>
@enderror
</div>
<div class="col-md-6">
<div class="form-group">
<label for="">Variente Unit</label>
<input type="text" name="unit" id="unit" value="" class="form-control" placeholder="Enter Variente Unit">
</div>
@error('unit')
<div class="alert">{{ $message }}</div>
@enderror
</div>
</div>
</div>
<div class="col-md-12" style="text-align:center;">
<button type="submit" class="btn btn-main">Submit</button>
<span class="btn btn-default reset">Clear</span>
<a href="{{url('admin-user/variante')}}" class="btn btn-default">Cancel</a>
</div>
</div>
</div>
</form>
Controller Validation
$validate = Validator::make($request->all(),[
'name' => 'required',
'variante_type_id' => 'required',
]);
if($validate->fails()){
return redirect()->back()->withErrors($validate);
}
<select>
标签将根据选项进行输入。由于您的选项是 {Select},{High},{Medium},{Low},它采用默认值 {Select} 即 pre-selected.
试试这个代码
<select name="txt_speaking" id="" class="form-control">
<option disabled>Select</option> //changes here
<option value="High">High</option>
<option value="Medium">Medium</option>
<option value="Low">Low</option>
</select>
disabled
确保不提交禁用的选项。
readonly
不允许选择该选项(或进行任何其他更改),但它会计算值
更多信息请点击此处
数据插入数组成功,但显示时没有出现。我需要它来显示嵌套的 foreach 循环。其他数据显示但阵列数据没有。我有一些工作 post 并且一些工作可能属于某些工作行业(类别如会计、金融)。在哪里改变它来解决这个问题我找不到它。我已经尝试了所有可能的解决方案。
我想展示一份多类别/行业的工作。数组插入是
["2","4","5"]
但它不显示,如果值像这样 2(number) 那么它就可以显示了。 “Print_r($allJobs)”也只显示第二个数据而不是数组。
这是我的控制器:
public function index(){
$allJobs = DB::table('jobs')
->join('companies','companies.id','=','jobs.comp_id')
->join('job_industries','job_industries.id','=','jobs.industry_id')
->join('job_types','job_types.id','=','jobs.job_type_id')
->join('districts','districts.id','=','jobs.district')
->where('jobs.status','=',1)
->select('jobs.*','companies.company_name','job_types.job_type','job_industries.industry_name','districts.name as disName')
->orderBy('jobs.id','desc')
->paginate(10);
return view('backEnd.job.jobList',['allJobs' => $allJobs]);
}
我的模特:
class Job extends Model
{
protected $fillable = [
'comp_id', 'emp_id', 'industry_id','job_type_id','title','vacancy','job_context','responsibility','requirement','salary','add_info',
'edu_requirement', 'experience','facility','division','district','app_info','deadline','image','status'
];
protected $casts = [
'industry_id' => 'array',
];
public function getDataAttribute($value)
{
return json_decode($value, true);
}
}
我的看法:
@php
$i =1;
@endphp
@foreach($allJobs as $allJob)
<tr>
<td>{{$i++}}</td>
<td>{{$allJob->title}}</td>
<td>{{$allJob->job_type}}</td>
<td>
@if (is_array($allJob) || is_object($allJob)){
@foreach(json_decode($allJob->industry_id, true) as $key => $value)
{{ $loop->parent->first ? '' : ', ' }}
<span><strong>{{ $value }}</strong></span>
@endforeach
@endif
</td>
<td>{{$allJob->company_name}}</td>
<td>{{$allJob->disName}}</td>
<td>{{$allJob->deadline}}</td>
</td>
</tr>
@endforeach
<form role="form" method="post" onsubmit="return validateForm('addsstatus')" class="addsstatus" action="{{url('admin-user/variante')}}" autocomplete="off" enctype="multipart/form-data">
@csrf
<div class="box-body">
<div class="last_row" id="criteria1">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="">Variante Type</label>
<select class="form-control select2 " name="variante_type_id" style="width: 100%;" id="variante_type_id">
<option value="">--Select --</option>
@foreach($varianteType as $varianteTypes)
<option value="{{$varianteTypes->id}}" >{{$varianteTypes->name}}</option>>
@endforeach
</select>
</div>
@error('variante_type_id')
<div class="alert">{{ $message }}</div>
@enderror
</div>
<div class="col-md-6">
<div class="form-group">
<label for="">Variente Name<span class="require label-mandatory">*</span></label>
<input type="text" name="name" id="name" value="" class="form-control input-mandatory" placeholder="Enter Variente Name">
</div>
@error('name')
<div class="alert">{{ $message }}</div>
@enderror
</div>
<div class="col-md-6">
<div class="form-group">
<label for="">Variente Unit</label>
<input type="text" name="unit" id="unit" value="" class="form-control" placeholder="Enter Variente Unit">
</div>
@error('unit')
<div class="alert">{{ $message }}</div>
@enderror
</div>
</div>
</div>
<div class="col-md-12" style="text-align:center;">
<button type="submit" class="btn btn-main">Submit</button>
<span class="btn btn-default reset">Clear</span>
<a href="{{url('admin-user/variante')}}" class="btn btn-default">Cancel</a>
</div>
</div>
</div>
</form>
Controller Validation
$validate = Validator::make($request->all(),[
'name' => 'required',
'variante_type_id' => 'required',
]);
if($validate->fails()){
return redirect()->back()->withErrors($validate);
}
<select>
标签将根据选项进行输入。由于您的选项是 {Select},{High},{Medium},{Low},它采用默认值 {Select} 即 pre-selected.
试试这个代码
<select name="txt_speaking" id="" class="form-control">
<option disabled>Select</option> //changes here
<option value="High">High</option>
<option value="Medium">Medium</option>
<option value="Low">Low</option>
</select>
disabled
确保不提交禁用的选项。
readonly
不允许选择该选项(或进行任何其他更改),但它会计算值
更多信息请点击此处