2016-04-13 31 views
0

Daha önce sorduğum iki düğmeyi sordum, kodlama örneklerini takip etmeye çalıştım ama benim için çalışmadı.Laravel 4 iki gönderme düğmesi

İki düğmeli bir form var (Önizleme & kaydet) Kaydet düğmesi, verileri DB'de kaydetmek içindir. Ön izleme düğmesi, girilen verileri bir görünümde görüntülemek içindir, kullanıcı geriye doğru gidebilir ve her şey yolundaysa verileri kaydedebilir.

Hangi düğmeyi tıklattığımı farketmez, her zaman boş bir sayfada olur: http://localhost:8888/laravel4/public/backend/menubuilder/5 @weiche yöntemi artık düzgün çalışıyor gibi görünüyor. Bununla birlikte, şansım yok. Eğer hatalar var olması olabilir iken

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!'); 
} 

cevap

0

bunun nedeni muhtemelen beyaz oluyor:

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

Rotam

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

Benim Kontrolörü olduğunu:

My Formu teslim olmuştur weiche() yönteminiz aslında hiçbir şey döndürmez. Sadece update()/preview() yöntemlerini çağırır. Bunu değiştirirseniz, kodunuzun geri kalanının doğru olduğunu varsayarak çalışır. :)

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 
} 

Veya, biraz daha kısa: Hala beyaz sayfaları alırsanız

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

, bir hata varsa ve günlüklerde kazma başlamak gerekir. İyi şanslar!

+0

MÜKEMMEL Teşekkürler. Çok kolay olabilir! –

+0

Sorun değil, yardımcı olmasına sevindim. :) –

+0

joel, son bir şey. ÖNİZLEME yeni bir sekmede/pencerede nasıl açılacağına dair bir fikriniz var mı? {Form :: submit ('önizleme', ['name' => 'preview', 'target' => '_blank']) ile çalıştım.}} Bu işe yaramadı –