Je veux interroger db en utilisant deux paramètres qui seront facultatifs, j'ai donc défini une route comme:
web.php
public function index($subject = null, $sbj_type = null)
{
$questions;
if (!$subject) {
dd($subject);
if (!$sbj_type) {
$questions = Question::where(['subject_id' => $subject, 'sbj_type_id' => $sbj_type])->get();
}
else {
$questions = Question::where(['subject_id' => $subject])->get();
}
}
}
Après cela, j'ai créé une fonction dans QuestionController.php comme:
Route::get('question/{subject?}/{sbj_type?}', 'QuestionController@index')->name('question.index');
Après cela, j'ai inséré cette URL comme http: // localhost / digitalinvigilator / question? subject = 1
mais je reçois une valeur nulle à chaque fois.
Quelqu'un peut-il m'aider?
3 Réponses :
Je suppose que vous avez utilisé Request pour accéder au paramètre de requête.
public function index(Request $request, $subject = null, $sbj_type = null)
{
$questions;
if (!$request->has('subject)) {
dd($subject);
if (!$sbj_type) {
$questions = Question::where(['subject_id' => $subject, 'sbj_type_id' => $sbj_type])->get();
}
else {
$questions = Question::where(['subject_id' => $subject])->get();
}
}
}
La condition peut être différente selon vos besoins dans If
Je n'ai pas de formulaire par lequel j'envoie Request . Pouvez-vous expliquer pourquoi vous avez utilisé Request?
Peu importe si vous n'utilisez pas de formulaire, le paramètre de requête peut être accédé par Request . et si vous ne souhaitez pas utiliser Request , envoyez les données subject en tant que Route Parameter
Essayez ceci avec $ request
Sur votre Route / Web.php
public function index(Request $request){
$questions;
if ($request->subject) {
if (!$request->sbj_type) {
$questions = Question::where(['subject_id' => $request->subject, 'sbj_type_id' => $request->sbj_type])->get();
}
else {
$questions = Question::where(['subject_id' => $request->subject])->get();
}
}
}
Sur votre contrôleur
Route::get('question', 'QuestionController@index')->name('question.index');
p>
Je n'ai pas de formulaire par lequel j'envoie Request. Pouvez-vous expliquer pourquoi vous avez utilisé Request?
Vous pouvez utiliser $ request sur n'importe quelle méthode get and post, essayez simplement ce mec et faites le moi savoir
Pour l'utiliser comme vous le spécifiez, vous devez utiliser la méthode query sur l'objet Request .
Vous avez également un bogue dans votre premier si, vous vérifiez si $ subject est une valeur erronée. Donc, si ! $ Subject est vrai, il continuera donc votre dd ($ subject) affichera toujours null ou une valeur fausse. Alors utilisez-le comme ceci:
public function index(Request $request)
{
$questions;
if ($request->query('subject')) {
dd($subject);
if ($request->query('sbj_type')) {
$questions = Question::where(['subject_id' => $request->query('subject'), 'sbj_type_id' => $request->query('sbj_type')])->get();
} else {
$questions = Question::where(['subject_id' => $request->query('subject'))->get();
}
}
}
source: https://laravel.com/docs/5.7/requests#retrieving-input
question? subject = 1est définitivement une URL incorrecte. Votre URL doit êtrequestion / 1c'est un paramètre facultatif, alors je l'ai fait.
Le paramètre facultatif signifie que l'URL peut être soit
questionouquestion / 1ouquestion / 1/2.Essayez Route :: get ('question / {: subject?} / {Sbj_type?}', 'QuestionController @ index') -> name ('question.index');
Oh! y a-t-il un moyen de le faire par
question? subject = 1Vous pouvez le faire facilement avec $ request