Je veux faire des questionnaires en ligne avec Laravel. Deux tables Cours et questions connectées les uns aux autres, l'utilisateur peut choisir parmi le nom du cours de page d'index pour aller à quiz pour ce cours, après avoir soumis, cela devrait aller sur des questions.Show, l'ID du cours sélectionné également. Mais lorsque j'essaie d'aller à la page d'index, l'erreur s'est produite comme suit: "" Variable non définie: cours (vue: c: \ xampp \ htdocs \ bilsan \ ressources \ vues \ questions \ index.blade.php) ""
voici les questions index.blade: p>
public function index()
{
$courses =Course::all();
return view('questions.index',compact('courses'));
}
3 Réponses :
dans votre Edit: Mes suggestions sur votre code P> Ajouter dans votre cours-> id code> pour l'action de route, mais cours code> ne reçoit pas défini jusqu'à la boucle de Foreach. Essayez de le poster à une route plus générale (où il n'a pas besoin d'un cours de cours-> id code>) ou assurez-vous que la vue obtient le cours code> du contrôleur.
QuestionsController CODE>: P> <form method="post" action="{{action('QuestionsController@store')}}">
@csrf
<select name="course_id" id="course_id" class="form-control mt-3" style="max-width:250px; margin: auto;">
<option>Select Courses</option>
@foreach($courses as $course)
<option value="{{$course->id}}">{{$course->courses_name}}</option>
@endforeach
</select>
<div class="mt-5 list-group" >
<input type="submit" value="submit" class="btn btn-primary" style="max-width:150px; margin: auto;">
</div>
</form>
@Dalianajeh Vous ressemblez comme vous essayez l'approche incorrecte, quel cours que vous avez sélectionné dans la liste déroulante, que cours-> ID code> sera envoyé dans votre formulaire.
Comme @stormhammer a dit, la meilleure façon de gérer cela serait de pointer vers une route générale qui accepte simplement une demande de demande dans la fonction, alors vous pouvez faire $ cours = cours :: FindorFail ($ Demande-> Course_id)
Comme PETAY87 dit, la meilleure façon d'aller ici (à mon avis) est de ne pas nécessiter d'identifiant de cours code> dans l'itinéraire et de le rendre général. Vous utilisez ensuite le code fourni par PETAY pour trouver le cours sélectionné et l'envoyer à vos questions.Show View.
Je change le formulaire en
Avez-vous mis un retour sur le contrôleur pour afficher une page?
J'ai modifié ma réponse, je pense que vous auriez tout ce dont vous avez besoin maintenant. Si vous avez des questions dites le moi.
Créez votre Formulaire CODE> Action sur Itinéraire ('question.store', $ Cource-> ID) code>. La forme doit être soumise à la méthode de stockage suivie de Resource code> routage dans web.php
C'est exactement le même code que dans la question et fournit une aide supplémentaire à la personne qui pose la question.
Le formulaire devrait aller à l'intérieur de la dans votre question, la lame ne sais pas ce que $ cours est dans votre itinéraire de formulaire car les données qui vient du contrôleur est de $ Cours et le formulaire doit également être à l'intérieur de la boucle de sorte que la variable $ du cours soit également définie dans une action de formulaire. P> P> foreach code> comme ceci
Bien que cela fonctionnerait, cela rendrait l'option de sélection inutile car elle ne sera jamais une option unique pour chaque cours. Cela fonctionnerait mieux si vous utilisez quelque chose comme une carte ou une touche pour chaque cours pour sélectionner.
Ceci fait une boîte déroulante et soumettre un bouton pour chaque option !!
Vous avez une erreur d'orthographe dans le nom de l'itinéraire (les questions doivent être des questions).