أود أن أعرف كيف يمكنني تضمين عمود به أزرار التضمين والتعديل لجميع الشاشات ، دون تكرار الرمز لكل عرض؟
لقد تمكنت من إنشاء العمود باستخدام الأزرار ، ولكن بالطريقة التي قمت بها ، كان علي أن أكرر الرمز لكل عرض. سيؤدي ذلك إلى زيادة الصيانة وربما نشر الأخطاء.
if ($request->ajax()) {
$cidades = Cidade::with('estado')->get();
return Datatables::of($cidades)
->addColumn('action', function ($cidades) {
$editar =
'<a href="' . route($this->dados['rota'] . '.edit', $cidades->id) . '" class="ui icon button yellow">' .
' <i class="icon write"></i>' .
'</a>';
$deletar = '<form action="' . route($this->dados['rota'] . '.destroy', $cidades->id) . '" method="post" style="display: inline">' .
csrf_field() .
method_field('DELETE') .
' <button type="submit" class="ui icon button red">' .
' <i class="icon trash"></i>' .
'</button >' .
'</form >';
return $editar . $deletar;
})
->make(true);
}
استخرج كود الأزرار لعرض جزئي ثم أعد استخدامه.
"" php
-> addColumn ('action'، function ($ cidades) {
عرض العودة ('path.to.buttons' ، مضغوط ('cidaded') -> render () ؛
})
كنت قادرا على فعل ما اقترحته. قمت بنقل الأزرار إلى عرض منفصل. ومع ذلك ، لست متأكدًا الآن من كيفية إرسال المعرفات إلى الأزرار بحيث تتم مزامنتها مع السجلات المناسبة عند عرضها بواسطة طريقة العرض.
<a href="{{HOW DO I GET THE ID FROM HERE}}/edit" class="ui icon button yellow">
<i class="icon write"></i>
</a>
<form action="{{HOW DO I GET THE ID FROM HERE}}" method="post" style="display: inline">
{{ csrf_field() }}
{{ Form::hidden("_method", "DELETE") }}
<button type="submit" class="ui icon button red">
<i class="icon trash"></i>
</button>
</form>
يمكنك استخدام اسم متغير عام مثل النموذج:
->addColumn('action', function ($model) {
return view('path.to.buttons', compact('model')->render();
})
<form action="{{$model->id}}" method="post" style="display: inline">
{{ csrf_field() }}
{{ Form::hidden("_method", "DELETE") }}
<button type="submit" class="ui icon button red">
<i class="icon trash"></i>
</button>
</form>