Laravel-datatables: ¿Cómo crear una columna predeterminada para todas las vistas?

Creado en 21 feb. 2017  ·  3Comentarios  ·  Fuente: yajra/laravel-datatables

Me gustaría saber cómo puedo incluir una columna con los botones de inclusión y edición para todas las pantallas, sin duplicar el código para cada vista.

Pude crear la columna con los botones, pero de la forma en que lo hice, tendría que repetir el código para cada vista. Esto aumentaría el mantenimiento y posiblemente propagaría errores.

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

Detalles del sistema

  • Sistema operativo Windows 10
  • PHP versión 7.1
  • Laravel Versión 5.4
  • Laravel-Datatables Versión 1.10.13
question

Todos 3 comentarios

Extraiga el código de sus botones en una vista parcial y luego reutilícelo.

`` php
-> addColumn ('acción', función ($ cidades) {
return view ('ruta.a.buttons', compact ('cidaded') -> render ();
})

Pude hacer lo que sugirió. Moví los botones a una vista separada. Sin embargo, ahora no estoy seguro de cómo puedo enviar los identificadores a los botones para que estén sincronizados con sus registros adecuados cuando la vista los represente.

<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>

Puede usar un nombre de variable 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>
¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

hohuuhau picture hohuuhau  ·  3Comentarios

sangnguyenplus picture sangnguyenplus  ·  3Comentarios

SGarridoDev picture SGarridoDev  ·  3Comentarios

ahmadbadpey picture ahmadbadpey  ·  3Comentarios

Abdulhmid picture Abdulhmid  ·  3Comentarios