Laravel-datatables: Wie erstelle ich eine Standardspalte für alle Ansichten?

Erstellt am 21. Feb. 2017  ·  3Kommentare  ·  Quelle: yajra/laravel-datatables

Ich möchte wissen, wie ich eine Spalte mit den Schaltflächen zum Einschließen und Bearbeiten für alle Bildschirme einfügen kann, ohne den Code für jede Ansicht zu duplizieren?

Ich konnte die Spalte mit den Schaltflächen erstellen, aber so wie ich es gemacht habe, müsste ich den Code für jede Ansicht wiederholen. Dies würde die Wartung erhöhen und möglicherweise Fehler verbreiten.

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

Systemdetails

  • Betriebssystem Windows 10
  • PHP-Version 7.1
  • Laravel-Version 5.4
  • Laravel-Datentabellen Version 1.10.13
question

Alle 3 Kommentare

Extrahieren Sie Ihren Schaltflächencode in eine Teilansicht und verwenden Sie ihn dann erneut.

```php
->addColumn('action', function ($cidades) {
return view('path.to.buttons', compact('cidaded')->render();
})

Ich konnte tun, was Sie vorgeschlagen haben. Ich habe die Schaltflächen in eine separate Ansicht verschoben. Ich bin mir jetzt jedoch nicht sicher, wie ich die IDs an die Schaltflächen senden kann, damit sie beim Rendern durch die Ansicht mit ihren richtigen Datensätzen synchronisiert werden.

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

Sie können einen generischen Variablennamen wie model verwenden:

->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>
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen