【问题标题】:Laravel 4 two submit buttonsLaravel 4 两个提交按钮
【发布时间】:2016-04-13 17:19:34
【问题描述】:

我知道之前有人问过两个提交按钮的问题,我尝试按照编码示例进行操作,但对我没有用。

我有一个带有两个按钮的表单(预览和保存) 保存按钮用于将数据保存在 DB 中。 预览按钮用于在视图中显示输入的数据,用户可以向后导航,如果一切正常,他可以保存数据。

无论我点击哪个按钮,我总是以空白页结束:http://localhost:8888/laravel4/public/backend/menubuilder/5 看来@weiche 方法现在可以正常工作了。

但是我没有运气。

我的表单提交给:

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

我的路线是

Route::post('backend/menubuilder/{id}',  array('uses' =>'MenuBuilderController@weiche'));
Route::resource('backend/menubuilder', 'MenuBuilderController');

我的控制器是:

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

【问题讨论】:

    标签: forms laravel


    【解决方案1】:

    虽然您可能有错误,但它可能是白色的,因为您的 weiche() 方法实际上并没有返回任何内容。它只是调用update()/preview() 方法。如果您更改为这个,它将起作用 - 假设您的其余代码是正确的。 :)

    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
    }
    

    或者,更短一点:

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

    如果您仍然得到白页,则说明您有错误,您需要开始挖掘日志。祝你好运!

    【讨论】:

    • 完美!谢谢。原来如此简单!
    • 没问题,很高兴它有帮助。 :)
    • 乔尔,最后一件事。知道如何在新选项卡/窗口中打开预览吗?我试过 { Form::submit('preview', ['name' => 'preview', 'target' => '_blank']) }} 这不起作用
    • 不怕,我主要是做后端编程。
    猜你喜欢
    • 2017-01-05
    • 1970-01-01
    • 2014-01-22
    • 2020-03-20
    • 2011-11-07
    • 2011-06-12
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    相关资源
    最近更新 更多