Laravel-datatables: Como criar uma coluna padrão para todas as visualizações?

Criado em 21 fev. 2017  ·  3Comentários  ·  Fonte: yajra/laravel-datatables

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);
        }

Detalhes do sistema

  • Sistema operacional Windows 10
  • PHP versão 7.1
  • Laravel Versão 5.4
  • Laravel-Datatables Versão 1.10.13
question

Todos 3 comentários

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>
Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

shadoWalker89 picture shadoWalker89  ·  3Comentários

kamrava picture kamrava  ·  3Comentários

josiahke picture josiahke  ·  3Comentários

t0n1zz picture t0n1zz  ·  3Comentários

hohuuhau picture hohuuhau  ·  3Comentários