Laravel-datatables: Comment créer une colonne par défaut pour toutes les vues ?

Créé le 21 févr. 2017  ·  3Commentaires  ·  Source: yajra/laravel-datatables

J'aimerais savoir comment inclure une colonne avec les boutons d'inclusion et d'édition pour tous les écrans, sans dupliquer le code pour chaque vue ?

J'ai pu créer la colonne avec les boutons, mais comme je l'ai fait, je devrais répéter le code pour chaque vue. Cela augmenterait la maintenance et propagerait éventuellement des bogues.

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

Détails du système

  • Système d'exploitation Windows 10
  • PHP version 7.1
  • Laravel version 5.4
  • Laravel-Datatables Version 1.10.13
question

Tous les 3 commentaires

Extrayez le code de vos boutons dans une vue partielle puis réutilisez-le.

```php
->addColumn('action', fonction ($cidades) {
return view('chemin.vers.boutons', compact('cidadé')->render();
})

J'ai pu faire ce que vous m'avez suggéré. J'ai déplacé les boutons vers une vue séparée. Cependant, je ne sais pas comment envoyer les identifiants aux boutons afin qu'ils soient synchronisés avec leurs enregistrements appropriés lorsqu'ils sont rendus par la vue.

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

Vous pouvez utiliser un nom de variable générique comme model :

->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>
Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

alejandri picture alejandri  ·  3Commentaires

NidhiDesai11 picture NidhiDesai11  ·  3Commentaires

SGarridoDev picture SGarridoDev  ·  3Commentaires

macnux picture macnux  ·  3Commentaires

sangnguyenplus picture sangnguyenplus  ·  3Commentaires