【发布时间】:2022-01-23 20:23:14
【问题描述】:
我有一个使用行跨度表和嵌套循环的编辑表单。我还有一个创建数据表单,可以像这样正常工作。我在这个项目中使用了 Laravel 8。
但是当我从数据库中添加值来创建编辑表单时:
我从数据库中获取 sasaran、indikator 和数据(问题),然后使用嵌套循环对其进行循环。仅供参考,我有 3 个 sasaran 的数据、12 个指标的数据和 47 个问题数据,需要与行跨一起加载。但是当我创建编辑表单时,行跨度不适合 sasaran、indikator 或问题数量,但它循环了 47 次。行跨度仅适用于 saran 的每个第一个数据,然后不适用于其余部分(如 Edit Form -1)并且还会复制数据。
仅供参考,我没有使用 Ajax 来创建和编辑表单。
这是代码:
查看:
@foreach($sasarans as $i => $sasaran)
@foreach($sasaran->indikator as $indikator)
@foreach($data_laporans as $data)
<tr>
@if($loop->first)
<td style="text-align:center; vertical-align:middle;"
rowspan="{{$indikator->pertanyaan->count()}}">
{{$i+1}} </td>
<td style="vertical-align:middle;"
rowspan="{{$indikator->pertanyaan->count()}}">
{{$sasaran->sasaran}} </td>
<td style="vertical-align:middle;"
rowspan="{{$indikator->pertanyaan->count()}}">
{{ $indikator->indikator}} </td>
@endif
<td style="vertical-align:middle;">
<textarea style="height:130px;"
class="form-control transparent disable"
readonly>{{ $data->pertanyaan->pertanyaan}}</textarea>
<input type="hidden" name="id_pertanyaan[]" class="form-control"
value="{{$data->id_pertanyaan}}">
</td>
<td>
<input type="text" name="jumlah[]"
class="form-control @error('jumlah') is-invalid @enderror"
value="{{$data->jumlah}}">
<!--Error Message-->
@error('jumlah')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</td>
<td>
<textarea name="keterangan[]"
class="form-control @error('keterangan') is-invalid @enderror" value="$data->keterangan"></textarea>
<!--Error Message-->
@error('keterangan')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</td>
<td>
<div class="custom-file"
style="margin-left:10px; margin-right:10px;">
<input type="file" name="bukti[]" class="custom-file-input">
<label class="custom-file-label"></label>
</div>
<!--Error Message-->
@error('bukti')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</td>
</tr>
@endforeach
@endforeach
@endforeach
控制器:
public function edit($id)
{
$sasarans = Sasaran::all();
$laporan_indikators = LaporanIndikator::where('id',$id)->first();
$data_laporans = DataLaporan::where('id_laporan',$id)->get();
return view('indikator-kinerja.edit',compact('laporan_indikators','data_laporans','sasarans'));
}
Sasaran 模型:
protected $fillable = ['sasaran'];
public function indikator() {
return $this->hasMany(DataIndikator::class, 'id_sasaran','id');
}
Indikator 型号:
protected $fillable = ['id_sasaran', 'indikator'];
public function sasaran() {
return $this->belongsTo(Sasaran::class, 'id_sasaran','id');
}
public function pertanyaan() {
return $this->hasMany(Pertanyaan::class, 'id_indikator','id');
}
Pertanyaan 的模型:
protected $fillable = ['id_indikator', 'pertanyaan'];
public function indikator() {
return $this->belongsTo(DataIndikator::class, 'id_indikator','id');
}
public function data_laporan() {
return $this->belongsTo(DataLaporan::class, 'id_laporan','id');
}
Data Laporan 的模型:
protected $fillable = ['id_laporan', 'id_pertanyaan','jumlah','keterangan','bukti'];
public function laporan() {
return $this->belongsTo(LaporanIndikator::class, 'id_laporan','id');
}
public function pertanyaan() {
return $this->belongsTo(Pertanyaan::class, 'id_pertanyaan','id');
}
Laporan Indikator 的模型:
public function data_laporan() {
return $this->hasMany(DataLaporan::class);
}
我真的很抱歉我的英语不好,但我真的很感谢你的帮助。谢谢。
更新:在我看来,我试图这样做以修复行跨度,但问题是每个 sararan 和 indikator 循环 47 次(我的意思是,不适合它的 sasaran 和 indikator 的数量),以及indikator 不适合 sasaran。您可以查看我为我想要的示例视图附加的创建表单视图。我想我知道问题出在哪里,但我真的不知道如何解决它。请帮助我,因为我仍然是初学者。谢谢。
新视图的代码:
@foreach($sasarans as $i => $sasaran)
@php ($first = true) @endphp
@foreach($sasaran->indikator as $indikator)
@foreach($data_laporans as $data)
<tr>
@if($loop->first)
<td rowspan="{{$data->pertanyaan->count()}}">{{$i+1}} </td>
<td rowspan="{{$data->pertanyaan->count()}}">{{$sasaran->sasaran}}</td>
<td rowspan="{{$data->pertanyaan->count()}}">{{$indikator->indikator}} </td>
@php ($first = false) @endphp
@endif
<td style="vertical-align:middle;"><textarea style="height:130px;"
class="form-control transparent disable" readonly>{{ $data->pertanyaan->pertanyaan}}</textarea>
<input type="hidden" name="id_pertanyaan[]" class="form-control" value="{{$data->pertanyaan->id}}"></td>
<td><input type="text" name="jumlah[]" class="form-control @error('jumlah') is-invalid @enderror" value="{{$data->jumlah}}">
<!--Error Message-->
@error('jumlah')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</td>
<td><textarea name="keterangan[]" class="form-control @error('keterangan') is-invalid @enderror">{{$data->keterangan</textarea>
<!--Error Message-->
@error('keterangan')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</td>
<td>
<div class="custom-file" style="margin-left:10px; margin-right:10px;">
<input type="file" name="bukti[]" class="custom-file-input">
<label class="custom-file-label"></label>
</div>
<!--Error Message-->
@error('bukti')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</td>
</tr>
@endforeach
@endforeach
@endforeach
【问题讨论】:
-
请花时间格式化您的问题代码。行上不需要 50 个前导空格!
标签: php laravel laravel-blade