我有以下视图(main.php),其中包含两个发布到同一路径的单独表单:
<form class="form" id="first_form" action="{{ urlFor('main.post') }}" method="post">
// form data
</form>
<form class="form" id="second_form" action="{{ urlFor('main.post') }}" method="post">
// form data
</form>
以下是呈现该视图并发布表单数据的路由逻辑:
$app->get('/main', function() use ($app) {
$app->render('main.php');
})->name('main');
$app->post('/main', function() use ($app) {
// do something
})->name('main.post');
现在在我的$app->post
方法中,我想区分提交的表单并相应地执行单独的逻辑,如下所示:
$app->post('/main', function() use ($app) {
if(first form was submitted) {
// do something
} else if(second form was submitted){
// do something else
}
})->name('main.post');
我想要完成的工作是否需要使用中间件?如果没有,我需要实现什么逻辑来完成这个看似简单的任务?
答案 0 :(得分:1)
您可以在表单中包含一个隐藏字段,用于指示提交的表单。
<form class="form" id="first_form" action="{{ urlFor('main.post') }}" method="post">
<input type="hidden" name="which" value="first_form">
// form data
</form>
<form class="form" id="second_form" action="{{ urlFor('main.post') }}" method="post">
<input type="hidden" name="which" value="second_form">
// form data
</form>
然后在您的路线中检查which
输入的值。
$app->post('/main', function() use ($app) {
$which = $app->request()->post('which')
if ('first_form' === $which) {
// do something
} else if ('second_form' === $which){
// do something else
}
})->name('main.post');