Gostaria de saber como posso incluir uma coluna com os botões include e edit para todas as telas, sem duplicar o código para cada view?
Consegui criar a coluna com os botões, mas da forma como fiz, teria que repetir o código para cada visualização. Isso aumentaria a manutenção e possivelmente propagaria bugs.
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);
}
Extraia o código dos botões para uma visualização parcial e, em seguida, reutilize-o.
`` `php
-> addColumn ('action', function ($ cidades) {
return view ('path.to.buttons', compact ('cidaded') -> render ();
})
Pude fazer o que você sugeriu. Mudei os botões para uma visualização separada. No entanto, agora não tenho certeza de como posso enviar os ids aos botões para que sejam sincronizados com seus registros apropriados quando renderizados pela visualização.
<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>
Você pode usar um nome de variável genérico como modelo:
->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>