J'utilise le Laravel framework et le moteur de modèle de lame pour l'un de mes projets, où j'ai un itinéraire qui ressemble à
Route::get('/problems/{problem-id}/edit', 'AdminController@editProblem');
J'ai editProblem méthode dans AdminController qui retourne une vue
public function editProblem(Problem $problem) {
return view('admin.problem-edit', compact('problem'));
}
et j'ai un bouton sur une vue qui ressemble à
<button class="btn btn-xs btn-info pull-right">Edit</button>
Maintenant, je veux appeler cette route avec le $problem->id
lorsque le bouton sera cliqué. J'ai besoin de transmettre ces valeurs sur l'itinéraire.
comment puis je faire ça?
Pour vous appeler route avec l'ID du problème, vous pouvez faire:
<a href="{{ url('/problems/' . $problem->id . '/edit') }}" class="btn btn-xs btn-info pull-right">Edit</a>
J'ai utilisé une balise d'ancrage, mais elle sera rendue comme votre balise de bouton car j'ai conservé la même classe de style que vous avez définie.
La raison est simple, la méthode url obtiendra l'url complète de votre contrôleur. Si vous ne l'utilisez pas, le lien href sera ajouté à l'url actuelle.
Par exemple, supposez que votre bouton se trouve à l'intérieur d'une page donnée
votredomaine.com/a-given-page/
lorsque quelqu'un clique sur votre bouton, le résultat sera:
votredomaine.com/a-given-page/problems/{problem-id}/edit
quand vous souhaitez obtenir ceci:
votredomaine.com/problems/{problem-id}/edit
Votre itinéraire a le "$ id", vous devez donc recevoir ce "$ id" dans votre méthode
public function editProblem($problem_id) {
$problem = \App\Problem::find($problem_id); //If you have your model 'Problem' located in your App folder
return view('admin.problem-edit', compact('problem'));
}
Essaye ça:
<button type="button" onclick="window.location='{{ url("users/index") }}'">Button</button>
Petite suggestion: Lorsque vous définissez des itinéraires dans laravel donnez-lui un nom unique, cela vous aide à garder une trace sur chaque URL comme celle-ci
Route::get('/problems/{problem-id}/edit', 'AdminController@editProblem')->name('pEdit');
Route::post('/problems/{problem-id}/edit', 'AdminController@editProblem')->name('pEdit');
Maintenant, vous utilisez cette route dans la lame avec juste le nom du message et obtenez les deux
<button type="button" onclick="window.location='{{ route("pEdit",array("parameter1")) }}'">Button</button>
Vous devrez créer un lien vers cet itinéraire:
<a href="/problems/{{ $problem->id }}/edit" class="btn btn-xs btn-info pull-right">Edit</a>
Si vous utilisez des routes nommées, ce sera encore plus facile:
Route::get('/problems/{problem-id}/edit', ['as' => 'problems.edit', 'uses' => 'AdminController@editProblem']);
Et puis il vous suffit d'appeler la méthode route
:
<a href="{{ route('problems.edit', $problem->id) }}" class="btn btn-xs btn-info pull-right">Edit</a>