【发布时间】:2013-06-24 15:56:57
【问题描述】:
我在 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>
所以基本上,同一页面上的两个单独的表单发布到同一控制器中的两个单独的方法 - 当方法成功时,它将它们重定向回“设置”。我不会发布这些方法,因为测试它们并且它们有效,我相信问题出在路由文件中:
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].
我猜是因为选项形式首先出现。如果我取出开放表单刀片代码(两者都适用),它会加载页面 - 但显然表单没有做任何事情。
任何帮助都会很好!提前致谢。
【问题讨论】: