2016-05-10 6 views
0

Ich habe diese Route:Mit der Funktion mit dem Parameter in Laravel

Route::post('/quiz/category/{$name}', '[email protected]'); 

der Kategorie Funktion playquiz Controller ist:

public function category($name) 
    { 
     $ch = DB::select('select * from quiz where category="$name" and level="1"'); 
     return View('quiz.index',['quiz'=>$ch]);  

} 

warum Link

<a href="{{url('quiz/category/geography')}}" class="list-group-item list-group-item-success">Geography</a> 

ist nicht anzunehmen Arbeit? Wie kann das gemacht werden?

quiz.index Ansicht:

@foreach ($quiz as $q) 

    {{ $q->qid }}. 
    {{ $q->question }}<br> 
    <input type='radio' name='mycheck[".$q->qid."]' value='1'>  
    {{ $q->opt1 }}<br> 
    <input type='radio' name='mycheck[".$q->qid."]' value='2'>  
    {{ $q->opt2 }}<br> 
    <input type='radio' name='mycheck[".$q->qid."]' value='3'>  
    {{ $q->opt3 }}<br> 
    <input type='radio' name='mycheck[".$q->qid."]' value='4'> 
    {{ $q->opt4 }}<br><br> 

@endforeach   
+1

Wenn Sie sagen, dass etwas nicht funktioniert - wir haben absolut ** NO IDEA **, was es bedeutet, dass es nicht funktioniert. Sie müssen alles erklären, Debug-Meldungen, protokollierte Nachrichten, erklären, was Sie versucht haben, was Sie brauchen, was Sie bekommen. Andernfalls bitten Sie die Leute, eine fundierte Vermutung zu geben. Zum Beispiel würde ich zuerst versuchen, die Quelle der Seite anzuschauen, um zu sehen, was

+0

Wenn Sie immer' MethodNotAllowed Exception' es ist, weil die Route 'Post' und ein Anker ist (' '-Tag) wird ein' GET' Antrag produzieren. – DavidT

Antwort

0

Ihre Route ändern zu

//Check removing of $ from name 
Route::get('/quiz/category/{name}', '[email protected]'); 

Sie Link verwenden, die eigentlich eine GET-Anforderung ist.

Sie Abfrage ist auch falsch. Das ist richtig.

public function category($name) 
{ 
    $ch = DB::select("select * from quiz where category='$name' and level='1'"); 
    return View('quiz.index',['quiz'=>$ch]);  

} 

Oder Sie können auch dieses

DB::table('quiz')->where('name',$name)->get(); 
DB::table('quiz')->where('name',$name)->first(); 

zuerst tun wird eine Sammlung aller Tests mit dem Namen zurückkehren und später wieder nur ein Modell. Sie können irgendeine gemäß Anforderung wählen.

+0

ok, dass Link Routen an die Steuerung, die auf die Ansicht zurück, und die View holt keine Daten aus der Datenbank, – Steve

-1

Ihr Quiz Modell Machen Sie sicher, dass es Modell erweitert. Etwas wie folgt aus:

Routes: 
Route::post('/quiz/category', '[email protected]'); 

<?php namespace App; 

class Quiz extends Model 
{ 

    protected $table = 'Quiz'; //table name 
    protected $fillable = ['mass assignable table fields']; 

} 

Und dann Ihre Funktion abfragen:

Nutzung App \ Quiz;

public function category(Request $request) 
    { 
     $ch = Quiz::whereCategory($request->name)->whereLevel(1)->get(); 
     return View('quiz.index')->with(compact('ch');  
} 

Ausblick:

<form method="POST" action="/quiz/category"> 
    <input type="hidden" value="geography" name="name"> 
    <button>Geography</button> 
</form> 

Enjoy :)

+1

Ihr 'Quiz' Modell' User' gestattet. I ist ein copy/paste Fehler erraten – DavidT

+0

Nizza Fang ich dachte, dass es es geändert ^^ eine Kopie War und rechts von meinem aktuellen Projekt einfügen:.!. P – ExohJosh

Verwandte Themen