Dans mon fichier Web, j'ai une route qui accepte un $ id comme valeur à transmettre à une fonction dans mon PagesController. Cependant, je veux que la fonction s'exécute toujours et affiche la forme voulue même si $ id n'est pas passé à la fonction.
fichier web.php
<input type="text" class="form-control" value="{{$target->inst_name}}" required disabled>
PagesController. php
public function makeRequest($id)
{
if(!empty($id)){
$target = Partner::find($id);
}
return view('pages.makeRequest')->with('target', $target);
}
makeRequest.blade.php
Route::get('/request/{id}', 'PagesController@makeRequest');
Je veux que la page affiche les détails de la base de données avec le $ id lorsqu'il est fourni ou avoir des espaces vides lorsque $ id n'est pas fourni.
7 Réponses :
Comme l'indique la documentation Laravel: utilisez les paramètres facultatifs comme ceci :
public function makeRequest($id = null)
{
if(!empty($id)){
$target = User::find($id);
return view('pages.makeRequest')->with('target', $target);
} else {
return view('pageslist'); ///set default list..
}
}
Contrôleur
Route::get('/request/{id?}', 'PagesController@makeRequest'); //Optional parameter
Merci pour votre réponse. Je viens de l'essayer et j'ai eu une erreur. `` `` Trop peu d'arguments pour fonctionner App \ Http \ Controllers \ PagesController :: makeRequest (), 0 passé et exactement 1 attendu `` ``
avez-vous passé l'identifiant dans votre URL?
Je veux que cela fonctionne à la fois pour les instances, c'est à dire. variable passée ou non.
Pour les paramètres optionnels pass id avec? dans route et donnez $ id = null dans le paramètre de votre fonction comme ceci:
Route::get('/request/{id?}', 'PagesController@makeRequest'); //Optional parameter
makeRequest($id = null) {
// Code here...
...
}
dans votre fichier de routes (web.php, comme mentionné dans votre question)
public function makeRequest($id = null)
{
}
et dans votre contrôleur PagesController.php
Route::get('/request/{id?}', 'PagesController@makeRequest');
Pour en savoir plus à ce sujet, il suffit de lire https://laravel.com/docs /5.7/routing#parameters-optional-parameters
Vous pouvez utiliser le paramètre facultatif :
<?php
public function makeRequest($id = null)
{
if($id){
$target = Partner::findOrFail($id);
return view('pages.makeRequest')->with(compact('target'));
}
// Return different view when id is not present
// Maybe all targets if you want
$targets = Partner::select('column1', 'column2')->get();
return view('pages.all')->with('targets');
}
Toutes vos solutions ont été utiles. L'essentiel était que lorsque j'appelais uniquement la vue sans passer $ target à la vue, la page affichait une erreur. Voici donc ce que j'ai fait.
<input type="text" class="form-control" value="" required readonly>
Ensuite, dans le contrôleur,
public function makeRequest(Request $request, $id=null)
{
if ($id != null) {
$target = Partner::find($id);
return view('pages.makeRequest')->with('target', $target);
}
return view('pages.makeNullRequest');
}
Si vous ne comprenez pas ce qui s'est passé, j'ai créé un nouvelle vue qui avait ceci au lieu de ce que j'avais publié dans la question.
Route::get('/request/{id?}', 'PagesController@makeRequest');
Désolé, je ne vous ai pas mis à jour à temps. Je pense que Jignesh Joisar a été le plus proche de m'aider à résoudre ce problème. vous appréciez vraiment tous les gars. Vous êtes tout simplement génial
Voici comment je l'ai fait:
localhost/api/index?id=7
// contrôleur
public function index(Request $request )
{
$id= $request->query('id');
}
La façon dont vous l'appelez:
Route::get('index', 'SeasonController@index');
Pour moi, la réponse était dans l'ordre dans lequel j'ai répertorié les routes dans le fichier routes.
Le fichier routes appellera le premier qui correspond au modèle.
Route::get('/ohmy/all', 'OhMyController@all');
Route::get('/ohmy/{id?}', 'OhMyController@show');
Au lieu de cela, mettez des paramètres facultatifs à la fin de la liste:
Route::get('/ohmy/{id?}', 'OhMyController@show');
Route::get('/ohmy/all', 'OhMyController@all'); //never gets called
Serait laravel.com/docs/5.7/routing#parameters-optional-parameters une> aide? (Et n'oubliez pas de rendre votre paramètre de méthode optionnel / lui donner une valeur par défaut)