2017-02-16 1 views
1

Utilisation de la fonction multi_auth de laravel 5.3 im en essayant de créer un bouton delete/edit/update. Je tente de supprimer un utilisateur du tableau de bord d'administration en récupérant des informations de la table des utilisateurs. En fait mon premier problème est avec la fonction destroy.Appel à une fonction membre delete() sur null/AdminHomeController.php ligne 26:

Ceci est mon détruire la route:

Route::get('{id}',[ 
    'as' => 'admin.destroy', 
    'uses' => '[email protected]' 
]); 

Ceci est mon contrôleur de admin:

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\Http\Requests; 
use App\User; 

class AdminHomeController extends Controller 
{ 
    public function __construct() 
    { 
     $this->middleware('admin.user'); 
    } 

    public function index() 
    { 
     $users = User::all(); 

     return view("admin-home")->with('users', $users); 
    } 

    public function destroy($id) 
    { 
     $users = User::find($id); 
     $users->delete(); 

     Flash::error('El usuario ' . $users->name . '$ ha sido eliminado con exito!'); 
     return redirect()->route('admin-home'); 
    } 
} 

View avec bouton Supprimer:

@extends('layouts.app') 

@section('content') 
<div class="container"> 
    <div class="row"> 
     <div class="col-md-8 col-md-offset-2"> 
      <div class="col-sm-offset-2 col-sm-8"> 
       @if (count($users) > 0) 
        <div class="panel panel-default"> 
         <div class="panel-heading"> 
          Todos los Usuarios 
         </div> 
         <div class="panel-body"> 
          <table class="table table-striped user-table"> 
           <thead> 
            <th>Nombre:</th> 
            <th>&nbsp;</th> 
            <th>Email:</th> 
            <th>&nbsp;</th> 
            <th>Acciones:</th> 
            <th>&nbsp;</th> 
           </thead> 
           <tbody> 
            @foreach ($users as $user) 
             <tr> 
              <td>&nbsp;</td> 
              <td>{{ $user->name }}</td> 
              <td>&nbsp;</td> 
              <td>{{ $user->email }}</td> 
              <td>&nbsp;</td> 
              <td>  
               <a href="{{ route('users.destroy', $user->id) }}" onclick="return confirm('¿Seguro que desea eliminar este Usuario?')" class="btn btn-danger"><i class="glyphicon glyphicon-trash" aria-hidden="true"></i></a> 
              </td > 
              <td>  
               <a href="{{ route('users.edit', $user->id) }}" class="btn btn-info"><i class="fa fa-pencil-square-o" aria-hidden="true"></i></a> 
              </td> 
              <td>&nbsp;</td> 
             </tr> 
            @endforeach 
           </tbody> 
          </table> 
        </div> 
       @endif 
      </div> 
     </div> 
    </div> 
</div> 
@endsection 

Merci!

+0

Vous n'avez pas pris la peine de vérifier que l'utilisateur :: find() retourné quoi que ce soit – GordonM

Répondre

0

Check id $ dans $users = User::find($id); $users->delete();

objet utilisateurs $ est nul parce que l'utilisateur n'a pas été trouvé dans la base de données ou $ id est incorrect

+0

J'ai 2 utilisateurs dans la DB, avec id: 1, 2. Je peux voir em dans la liste des utilisateurs, mais il échoue après avoir créé le bouton de suppression –

+0

pouvez-vous poster "supprimer" le code du bouton? probablement un bouton manquant id paramètre – edwardstock

+0

et un autre pense: essayez d'utiliser User :: findOrFail ($ id) au lieu de find(), cela va lancer erreur si quelque chose va mal – edwardstock

0

Après avoir joué avec le code que j'ai trouvé ce UTILE: Dans le vue j'avais 2 boutons le supprimer et le modifier, j'ai changé:

{{route ('users.destroy', $ user-> id)}} {{route ('users.edit', $ utilisateur -> id)}}

pour:

{{url ('users.destroy', $ user-> id)}} {{url ('users.edit', id $ user->)}}

Et maintenant je peux voir les boutons sans aucun problème, le problème est maintenant le même que précédemment, la fonction détruire me donne une erreur. Ce est la route qui provoque l'erreur:

Route::get('{id}',[ 
    'as' => 'admin.destroy', 
    'uses' => '[email protected]' 
]); 

Erreur: Aucun résultat de requête pour le modèle [App \ User].

Ceci est mon modèle d'utilisateur:

<?php 

namespace App; 

use Illuminate\Notifications\Notifiable; 
use Illuminate\Foundation\Auth\User as Authenticatable; 

class User extends Authenticatable 
{ 
    use Notifiable; 

    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = [ 
     'name', 'email', 'password', 
    ]; 

    /** 
    * The attributes that should be hidden for arrays. 
    * 
    * @var array 
    */ 
    protected $hidden = [ 
     'password', 'remember_token', 
    ]; 
} 

Et ne trouvez toujours pas le problème .. @edwardstock