2
votes

Laravel CRUD supprimer les paramètres d'itinéraire

J'aimerai utiliser un contrôleur CRUD pour gérer le profil administrateur. J'ai créé le contrôleur et modifié mes routes / web.php comme ceci.

admin/profile -> admin.profile.index
admin/profile/{profile} -> admin.profile.destroy
admin/profile/{profile} -> admin.profile.update
admin/profile/{profile}/edit -> admin.profile.edit

Ceci crée les routes suivantes.

Route::group(['prefix' => 'admin', 'namespace' => 'Admin', 'as' => 'admin.', 'middleware' => ['auth:admin']], function(){
    Route::resource('profile', 'ProfileController')->only(['index', 'edit', 'update', 'destroy']);
});

Depuis que j'obtiens le admin_id via la session, je n'ai pas besoin de l'obtenir via le URL via le paramètre de profil. Je sais que je pourrais simplement ignorer le paramètre, mais cela rend l'URL inutile longtemps. Est-il possible de supprimer le paramètre {profile} des itinéraires, afin que mes itinéraires soient comme enseignant / profil / modifier et non comme enseignant / profil / 12345678 / modifier ?


0 commentaires

3 Réponses :


2
votes

Vous pouvez utiliser des itinéraires séparés au lieu de ressources pour votre opération individuelle. Comme

For index operation you can use:-
Route::get('profile', 'ProfileController@index');
For destroy operation you can use:-
Route::delete('profile', 'ProfileController@destroy');
For edit operation you can use:-
Route::put('profile', 'ProfileController@edit');

Et vous pouvez envoyer votre admin_id en entrée ou en session. J'espère que cela fonctionnera pour vous :)


0 commentaires

1
votes
  • Oui, vous pouvez supprimer ces paramètres spécifiques de l'itinéraire.
  • mais à la place, vous devez envoyer les données de profil via la variable de publication
  • Il n'est pas possible d'envoyer des données de publication dans chaque redirection.

Je vous suggère d'utiliser "Slugs" au lieu de l'identifiant de profil


0 commentaires

1
votes

Oui, vous pouvez supprimer la partie {profile} si vous appelez d'abord le profil nécessaire dans le contrôleur comme tel:

<form method="post" action="{{ route('teacher.profile.update', $teacher->id) }}">
    @method('PATCH')
    @csrf
    ID: <input type="text" name="id" value={{ $teacher->id}} />
    <button type="submit">Update</button>
</form>

Et à l'intérieur de la page d'affichage ( enseignant / profil / modifier), vous pouvez appeler les données comme telles:

public function edit(){
    $teacher = Auth::user();
    return view('teacher.profile.edit', compact('teacher'));
}

J'espère que cette aide. Bravo!


0 commentaires