2016-04-13 14 views
0

Ich weiß, dass die zwei Senden-Schaltflächen Frage wurde zuvor gefragt, ich habe versucht, die Codierungsbeispiele zu folgen, aber es hat nicht funktioniert für mich.Laravel 4 zwei senden Buttons

Ich habe ein Formular mit zwei Tasten (Vorschau & speichern) Die Schaltfläche Speichern dient zum Speichern der Daten in der DB. Die Vorschau-Taste dient zur Anzeige der eingegebenen Daten in einer Ansicht, der Benutzer kann zurück navigieren und wenn alles in Ordnung ist, kann er die Daten speichern.

Egal, auf welche Schaltfläche ich klicke, ich lande immer auf einer leeren Seite: http://localhost:8888/laravel4/public/backend/menubuilder/5 Es scheint, als ob die @weiche-Methode jetzt richtig funktioniert.

Allerdings habe ich kein Glück.

Meine Form unterbreitet:

{{ Form::open(array('url' => 'backend/menubuilder/'.$id, 'method' => 'POST'))}} 

Meine Strecke ist

Route::post('backend/menubuilder/{id}', array('uses' =>'[email protected]')); 
Route::resource('backend/menubuilder', 'MenuBuilderController'); 

Mein Controller:

public function weiche($id) { 
    //check which submit was clicked on 
     if(Input::get('save')) { 
       $this->update($id); //if login then use this method 
     } elseif(Input::get('preview')) { 
       $this->preview($id); //if register then use this method 
     } 
} 

public function preview($id) 
{ 

    //Wenn angemeldeter Benutzer gleich aufgerufener id -> Anzeigen des dashboards für den entsprechenden User 
    $user = User::find($id); 
    $owner = (Auth::id() === (int) $id); 
    return View::make('backend/menubuilder/templatesview/tempone')->withUser($user)->withOwner($owner); 

} 


public function update($id) 
{ 
    //Aktualisieren der User Profile 
    $rules = array(
     // 'username' => 'unique:users', 
     'password' => 'min:6' 
    ); 
    $validator = Validator::make(Input::all(), $rules); 

    //Wenn Prüfung fehlgeschlagen, Weiterleitung mit Fehlermeldung 
    if ($validator->fails()) 
     return Redirect::to('backend/menubuilder/'.$id.'/edit')->withInput()->withErrors($validator->messages()); 


    $user = User::find($id); 
    //Wenn Eingabefeld ausgefüllt wird, aktualisere den bestehenden Wert mit dem eingegeben Wert 
    $user->gericht_1_mo = Input::get('gericht_1_mo'); 
$user->gericht_2_mo = Input::get('gericht_2_mo'); 
$user->preis_1_mo = Input::get('preis_1_mo'); 
$user->preis_2_mo = Input::get('preis_2_mo'); 

    if(Input::has('password')) $user->password = Hash::make(Input::get('password')); 
    $user ->save(); 
    Session::flash('message', 'Deine Wochendkarte wurde gespeichert'); 
    //return Redirect::to('backend/menuebuilder'.$id); 
    return Redirect::back()->withMessage('Wochendkarte gespeichert!'); 
} 

Antwort

0

Während es, dass Sie Fehler haben könnte, es ist wahrscheinlich weiß, weil Ihre weiche() Methode gibt tatsächlich nichts zurück. Es ruft nur die update()/preview() Methoden auf. Wenn Sie dies ändern, wird es funktionieren - vorausgesetzt, der Rest Ihres Codes ist korrekt. :)

if(Input::get('save')) { 
    return $this->update($id); //if login then use this method 
} elseif(Input::get('preview')) { 
    return $this->preview($id); //if register then use this method 
} 

Oder etwas kürzer:

return Input::get('save') ? $this->update($id) : $this->preview($id); 

Wenn Sie noch weiße Seiten bekommen, haben Sie einen Fehler, und Sie werden in den Protokollen zu graben beginnen müssen. Viel Glück!

+0

PERFEKT! Danke. Es könnte so einfach sein! –

+0

Kein Problem, froh, dass es geholfen hat. :) –

+0

Joel, eine letzte Sache. Irgendeine Idee, wie man die PREVIEW in einem neuen Tab/Fenster öffnet? Ich habe es versucht mit {Form :: submit ('Vorschau', ['Name' => 'Vorschau', 'Ziel' => '_blank'])}} Dies hat nicht funktioniert –