我在Laravel 4中的表单处理有些奇怪的行为。我有一个名为“设置(settings)”的页面,其中包含两个表单,每个表单都会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>
基本上,同一页上有两个单独的表单,它们分别提交到同一个控制器中的两个不同方法 - 当方法成功时,将它们重定向回“设置”。我不会发布这些方法,因为我已经测试过它们并且它们有效,我相信问题在路由文件中:
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');
});
});
我相信它不喜欢这两个POST路由这样做,但是我想不到其他方法来解决这个问题,因为表单在同一页上。我收到了错误提示:
Unknown action [SettingController@editOption].
由于选项表单出现在前面,我猜测如果我将开放式表单的代码删除(针对两者),页面会加载 - 但显然该表单不起作用。
希望能得到任何帮助!提前感谢。