2 votes

Comment passer l'id dans le contrôleur à partir de la vue (Editer un utilisateur dans Laravel)

J'ai une vue qui affiche tous les user dans la base de données. Lorsque l'on clique sur le bouton edit un message d'erreur s'affiche :

Paramètres requis manquants pour [Route : admin.] [URI : admin/edit/{id}].

{!! Form::open(array('action' => 'Admin\AdminController@edit')) !!} 

<tbody>
   @unless (empty($userdata))
   @foreach ($userdata as $user)
   <tr>
      <td>{{$user->id}}</td>
      <td>{{$user->name}}</td>
      <td>{{ date('d-m-Y', strtotime($user->created_at)) }}</td>
      <td>{{$user->email}}</td>
      <td>{{$user->role}}</td>
      <td><a href="admin/edit/{{$user->id}}" class="btn btn-primary"><i class="fa fa-pencil"></i></a></td>
   </tr>
   @endforeach 
   @endunless                                                 
</tbody>

routes.php

Route::group(['middleware' => ['auth','admin'], 'prefix' => 'admin', 'as' => 'admin.'], function () {
    Route::get('/home', 'Admin\AdminController@index');    
    Route::get('/register', 'Admin\AdminController@register');
    Route::post('/create', 'Admin\AdminController@create');
    Route::get('/manage', 'Admin\AdminController@manage');
    Route::any('/quote', 'Quote\QuoteController@index');
    Route::patch('/edit/{id}', 'Admin\AdminController@edit');
});

J'ai également essayé ces solutions, mais elles ne fonctionnent toujours pas.

route() :

<td><a href="{{ route('admin.edit', ['id'=>$user->id]) }}" class="btn btn-primary"><i class="fa fa-pencil"></i></a></td>

url() :

<td><a href="{{ url('/admin/edit/'.$user->id) }}" class="btn btn-primary"><i class="fa fa-pencil"></i></a></td>

2voto

Mayuri Pansuriya Points 595

Changement :

<td>
    <a href="http://stackoverflow.com/edit/{{$user->id}}" class="btn btn-primary">
        <i class="fa fa-pencil"></i>
    </a>
</td>

à :

<td>
    <a href="http://stackoverflow.com/admin/edit/{{$user->id}}" class="btn btn-primary">
        <i class="fa fa-pencil"></i>
    </a>
</td>

Votre itinéraire doit comprendre admin .

2voto

sangamesh Points 21

Vous pouvez le faire passer par URL .

S'il s'agit d'un formulaire vous pouvez avoir une entrée cachée pour le id . Par exemple

<input type="hidden" name="user_id" value="{{ $user->id }}">

1voto

Evgeniy Belov Points 328

Je pense que vous devez ajouter l'itinéraire pour l'édition

Route::patch('/edit/{id}', 'Admin\AdminController@edit')->name('edit');

et ajouter la fonction d'itinéraire dans la lame

<td><a href="{{ route('admin.edit', ['id'=>$user->id]) }}" class="btn btn-primary"><i class="fa fa-pencil"></i></a></td>

1voto

Hemant Kumar Points 414
{!! Form::open(array('action' => 'Admin\AdminController@edit')) !!}

Problème résolu : Il y avait un problème avec mon action de formulaire qui pointait vers la même méthode de contrôleur.

<div class="box-body table-responsive">
   <table class="table table-hover data-table">
      <thead>
         <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Date</th>
            <th>Email</th>
            <th>Role</th>
            <th>Edit</th>
         </tr>
      </thead>
      <tbody>
         @unless (empty($userdata))
         @foreach ($userdata as $user)
         <tr>
            <td>{{$user->id}}</td>
            <td>{{$user->name}}</td>
            <td>{{ date('d-m-Y', strtotime($user->created_at)) }}</td>
            <td>{{$user->email}}</td>
            <td><a href="{{ url('/admin/edit/'.$user->id) }}" class="btn btn-primary"><i class="fa fa-pencil"></i></a></td>
         </tr>
         @endforeach 
         @endunless                                                 
      </tbody>
   </table>
</div>

Itinéraires

Route::group(['middleware' => ['auth','admin'], 'prefix' => 'admin', 'as' => 'admin.'], function () {
    Route::get('/home', 'Admin\AdminController@index');    
    Route::get('/register', 'Admin\AdminController@register');
    Route::post('/create', 'Admin\AdminController@create');
    Route::get('/manage', 'Admin\AdminController@manage');
    Route::any('/quote', 'Quote\QuoteController@index');    
    #Route::post('/edit', ['uses'=>'Admin\AdminController@edit']);

    Route::get('edit/{id}', 'Admin\AdminController@edit')->name('update.request');

});

Merci pour votre aide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X