Laravel 4 - 同一页面上有多个表格?

Ali*_*ias 5 html php laravel blade

我在Laravel 4中的表单有一些奇怪的行为.我有一个"设置"页面,其中包含两个表单,每个表单(应该)POST到控制器方法,更新数据库并返回到设置页面.但是,无论是我的表单工作方式还是我的路线,似乎都存在问题.

这是它的简化方式:

设置页面:(site.com/settings)

<div id="form-one" class="form-area">

{{ Form::open(array('action' => 'SettingController@editOption')) }}
   {{ Form::text('optionvalue', 'Default')) }}
   {{ Form::submit('Save Changes') }}
{{ Form::close() }}

</div>

<div id="form-two" class="form-area">

{{ Form::open(array('action' => 'SettingController@editPage')) }}
   {{ Form::text('pagevalue', 'Default')) }}
   {{ Form::submit('Save Changes') }}
{{ Form::close() }}

</div>
Run Code Online (Sandbox Code Playgroud)

基本上,同一页面上的两个单独的表单会在同一个控制器中发布两个单独的方法 - 当方法成功时,它会将它们重定向回"设置".我不会发布方法,因为测试它们并且它们有效,我相信问题出在routes文件中:

routes.php文件

// Checks if a session is active
Route::group(array('before' => 'require_login'), function()
{   
    Route::group(array('prefix' => 'settings'), function()
    {
        Route::get('/', 'SettingController@index');
        Route::post('/', 'SettingController@editOption');
        Route::post('/', 'SettingController@editPage');

    });
});
Run Code Online (Sandbox Code Playgroud)

现在我很确定它不喜欢这两个POST路由,但我想不出另一种方法,因为表单在同一页面上.我收到错误:

Unknown action [SettingController@editOption].
Run Code Online (Sandbox Code Playgroud)

由于选项表格首先出现,我猜.如果我将开放式刀片代码输出(两者都有),它会加载页面 - 但显然表单没有做任何事情.

你能帮忙的话,我会很高兴!提前致谢.

小智 2

您不能为不同的操作添加两个相同的路由,因为它们将传递到第一个匹配的路由,在您的情况下传递到SettingController@editOption. 将您的路线更改为:

    Route::post('/option', 'SettingController@editOption');
    Route::post('/page', 'SettingController@editPage');
Run Code Online (Sandbox Code Playgroud)

在这两个操作中,您都可以重定向到 '/': return Redirect::back(),如果发生错误:

if ($validation->fails())
{
    return Redirect::to('/settings')->with_errors($validation);
}
Run Code Online (Sandbox Code Playgroud)