2017-05-13 7 views
1

Ich habe 2 Tasten in meiner Klinge. Ich möchte die gleiche Datenbankspalte mit ihnen aktualisieren, wenn ich auf die Schaltfläche 1 klicke, aktualisiert sie die Spalte auf 1, wenn ich auf die zweite Schaltfläche klicke, aktualisiert sie die Spalte auf 2. Ich benutze die gleiche Route, um dies zu tun, weil ich muss Übergeben Sie die "ID" von der Ansicht an den Controller.2-Taste Zugriff auf verschiedene Methode in der gleichen Controller mit der gleichen Route mit Laravel

Tasten in der Ansicht:

{!! Form::open(['method' => 'GET', 'route' => ['show.approve_notification_application', $userdetail->id], 'style'=>'display:inline']) !!} 
    {!! Form::submit('Accpet', ['class' => 'btn btn-success']) !!} 
    {!! Form::close() !!} 

    {!! Form::open(['method' => 'GET', 'route' => ['show.approve_notification_application', $userdetail->id], 'style'=>'display:inline']) !!} 
    {!! Form::submit('Send to Super Admin', ['class' => 'btn btn-success']) !!} 
    {!! Form::close() !!} 

Routen

Route::get('/notification_list/notification_application/{notification_id}', '[email protected]')->name('show.approve_notification_application'); 

Route::get('/notification_list/notification_application/{notification_id}', '[email protected]')->name('show.approve_notification_application'); 

-Controller

public function approveNotification($id){ 

     $notification = Notification::find($id); 
     $notification->approved = '2'; 
     $notification->save(); 

     return redirect()->route('admin.notification_list'); 
    } 


    public function sendNotificationToSuperAdmin($id){ 

     $notification = Notification::find($id); 
     $notification->approved = '1'; 
     $notification->save(); 

     return redirect()->route('admin.notification_list'); 
    } 

Ich weiß nicht, wie dies zu tun. Wenn ich eine beliebige Taste klicken, wird nur der zweite Weg, die unabhängig von zu funktionieren scheint, bedeutet, welche Taste ich klicken, aktualisiert es immer um die Tabelle mit dem Wert 1

+0

Hallo Mill3r. Wenn eine Frage gelöst ist, reicht ein Klick auf das Häkchen aus - wir verwenden hier nicht das [gelöste] Gerät, und ich habe es zuvor von Ihren Fragen entfernt. Vielen Dank. – halfer

Antwort

1

das ist, weil Sie nicht zwei oder mehr Routen mit gleicher URL und Methodentyp festlegen. Sie können dieselbe URL mit einem anderen Typ wie Route:get('hi') und Route::post('hi') verwenden.

Zurück zu Ihrem Problem können Sie etwas tun:

Buttons

{!! Form::open(['method' => 'GET', 'route' => ['show.approve_notification_application', $userdetail->id], 'style'=>'display:inline']) !!} 
{!! Form::hidden('type', 0) !!} 
{!! Form::submit('Accpet', ['class' => 'btn btn-success']) !!} 
{!! Form::close() !!} 

{!! Form::open(['method' => 'GET', 'route' => ['show.approve_notification_application', $userdetail->id], 'style'=>'display:inline']) !!} 
{!! Form::hidden('type', 1) !!} 
{!! Form::submit('Send to Super Admin', ['class' => 'btn btn-success']) !!} 
{!! Form::close() !!} 

-Controller

public function approveNotification(Request $request, $id){ 

    $notification = Notification::find($id); 
    $notification->approved = $request->input('type') == 1 ? 1 : 2; 
    $notification->save(); 

    return redirect()->route('admin.notification_list'); 
} 

vergessen Sie nicht use Illuminate\Http\Request in der Spitze einzufügen von die Datei nach dem Namespace.

Routen

halten die erste und die zweite löschen.

+0

vielen Dank .. – Mill3r

+0

tatsächlich später fand ich, dass es nur den ersten Wert akzeptiert ... – Mill3r

+0

Änderung Methode von ** bekommen ** bis ** Post ** auch in der Route - oder - change '$ request-> input ('type')' in '$ request-> get ('type')' ** Ich habe zuerst favorisiert ** – MohamedSabil83

1

Der Grund für Ihr Problem:

in die Routes-Datei - Sie haben 2 Methoden mit dem gleichen Namen aufgerufen - deshalb kommt sie zur 2. Route (der zweite Name überschreibt den ersten);

Wie löst man es?

Zuerst - löschen Sie eine der Routen.

Dann - ein verstecktes Feld in Ihrem Formular hinzufügen, damit Sie später wissen können, welche Taste

Danach wurde angeklickt - Sie eine IF in Ihrem Controller hinzufügen müssen - nach $ id etwas wie folgt aus:

if ($yourHiddenField == 1) { 
    ... your code here... 
} elseif ($yourHiddenField == 2) { 
    ... your code here ... 
} 

(Sie müssen den Wert des verborgenen Feldes zuerst bekommen)

+0

die ID ist in meinem Fall gleich. Es ist die Benutzer-ID.Ein Knopf ist für das Akzeptieren der Anwendung ein anderer für das Senden für die weitere Genehmigung. Wie verwende ich die if else-Anweisung, um zwischen den 2 Schaltflächen zu wählen? – Mill3r

+0

Sie müssen verstecktes Feld in Ihren Formularen hinzufügen - in der ersten werden Sie Wert = "1" setzen, und in der zweiten wird Wert = "2" gesetzt. Ich aktualisierte meine Antwort nach dieser – user1598814

Verwandte Themen