Laravel France

Laravel 6.x : Trying to get property 'id' of non-object

Avatar de BrinkDev
BrinkDev

Bonjour,

je viens vers vous car je me prends la tête avec un sujet depuis quelques jours et j'avoue ne pas trouver la solution.

Je souhaite avoir un avis et une aide afin de débloquer la situation.

je vous mets ma vue, mon controller et mes routes :

Vue :

            <div class="card">
                <div class="card-header">
                    <h4>Edit register roles</h4>
                </div> 
                <div class="card-body">
                        <form action="/role-register-update/{{ $users- >id }}" method="POST">
                            {{ csrf_field() }}
                            {{ method_field('PUT') }}
                            <div class="form-group">
                                <labe>Name</label>
                                <input type="text" name="name" value="{{ $users->name }}" class="form-control">
                            </div>
                            <div class="form-group">
                                <label>Give role</label>
                                <select name="type" class="form-control">
                                    <option value="admin">Admin</option>
                                    <option value="vendor">Vendor</option>
                                    <option value="">None</option>
                                </select>
                                <button type="submit" class="btn btn-success">Update</button>
                                <a href="/role-register" class="btn btn-danger">Cancel</a>
                            </div>
                        </form>
                </div>
            </div>

        </div>
    </div>
</div>

Controller :

<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller; use App\User; use Illuminate\Http\Request;

class DashboardController extends Controller { public function registered() { $users = User::all(); return view('admin.registeradmin')->with('users', $users); }

public function edit(Request $request,$id)
{
    $users = User::findOrFail($id);
    return view('admin.edit-register')->with('users',$users);
}

public function update(Request $request, $id)
{
    $users = User::findOrFail($id);

    $users->name = $request->input('name');
    $users->usertype = $request->input('type');
    $users->update();

    return redirect('/role-register')->with('status', 'You data is update');
}

public function destroy($id)
{
    $users = User::where('id', $id);

    if ($users != null)
    {
        $users->delete();
        return redirect('/role-register')->with('status', 'User is correctly deleted !');
    }
    return redirect('/role-register')->with('status', 'User is not correctly deleted !');
}

}

Routes :

Posté il y a 2 mois
Avatar de bestmomo
bestmomo

Salut,

Tu peux préciser un peu le problème ?

Posté il y a 2 mois
Avatar de BrinkDev
BrinkDev

Salut,

j'ai mis en place un admin panel et dedans, il y a une table qui reprend tout mes users enregistrer et je peux les administrer.

Mon bouton de suppression fonctionne parfaitement mais le liens pour éditer le role du user ne fonctionne pas.

Dans mon controller je dis que je veux récupérer le user par son id (findOrFail($id)) et je retourne la vue edit pour modifier les parametres et dans ma vue (ou je pense que le soucis est la) je cherche a récupere dans la balise form comme suit :

 <form action="/role-register-update/{{ $users->id }}" method="POST">

une fois que je clique sur le bouton edit dans ma vue admin panel j'ai une erreure qui remonte comme quoi je cherche a appeler une variable non objet (id)

des suggestions ?

ca fait une dixaine de jours que je suis dessus

Posté il y a 2 mois
Avatar de bestmomo
bestmomo

Si je comprends bien c'est le lien du bouton Edit dans la vue avec la liste des utilisateurs qui fonctionne pas. Mais tu n'as pas mis cette vue.

Posté il y a 2 mois
Avatar de BrinkDev
BrinkDev

La voila la vue :

    <div class="col-md">
        <div class="card">
            <div class="card-header">
                <h5 class="card-category">All Persons List</h5>
                <h4 class="card-title">Registered Roles</h4>
                @if (session('status'))
                    <div class="alert alert-success" role="alert">
                        {{ session('status') }}
                    </div>
                @endif
            </div>

            <div class="card-body">
                <div class="table-responsive">

                    <table class="table">
                        <thead class=" text-primary">
                        <th>ID</th>
                        <th>Name</th>
                        <th>Email</th>
                        <th>Usertype</th>
                        <th>Edit</th>
                        <th>Delete</th>
                        </thead>

                        <tbody>
                            @foreach($users as $row)
                                <tr>
                                    <td>{{ $row->id }}</td>
                                    <td>{{ $row->name }}</td>
                                    <td>{{ $row->email }}</td>
                                    <td>{{ $row->usertype }}</td>
                                    <td>
                                        <a href="/role-edit/{{ $row->id }}" class="btn btn-success">EDIT</a>
                                    </td>
                                    <td>
                                        <form action="/role-delete/{{ $row->id }}" method="post">
                                            {{ csrf_field() }}
                                            {{ method_field('DELETE') }}
                                            <button type="submit" class="btn btn-danger">Cancel</button>
                                        </form>
                                    </td>
                                </tr>
                            @endforeach
                        </tbody>
                    </table>

                </div>
            </div>
        </div
    </div>
</div>
Posté il y a 2 mois
Avatar de KYoann
KYoann

Ca serais mieux de nommer tes routes et de les utiliser par la fonction Route('nomdelaroute',['id' => $row->id)

Posté il y a 2 mois
Avatar de BrinkDev
BrinkDev

nommé mes routes comme suit ?

Route::get('/role-register', 'Admin\DashboardController@registered')->name('nomdelaroute');

Posté il y a 2 mois
Avatar de KYoann
KYoann

C'est bien ça.

Posté il y a 2 mois
Avatar de BrinkDev
BrinkDev

j'ai déjà essayer et cela ne fonctionne toujours pas

Posté il y a 2 mois
Avatar de KYoann
KYoann

Tu appel utilise bien la fonction Route() dans blade pour générer le parametre action du formulaire ?

As tu essayer de mettre une pause, ou un dd($request) dans la méthode correspondante de ton controleur ?

Posté il y a 2 mois
Avatar de KYoann
KYoann

--

Posté il y a 2 mois
Avatar de Jeelo
Jeelo

Bonjour, je débute avec Laravel, comment et ou insérer une pause dans un code ? Et à quoi cela sert t-il ? Y a t-il une bonne méthode pour déboguer son code et mieux comprendre ses erreurs ? car j'en ai un paquet. Merci.

Posté il y a 2 mois

Vous ne pouvez pas répondre à ce sujet.