【发布时间】:2018-03-06 22:03:13
【问题描述】:
我是 Laravel 的新手,只想拥有一个小程序,它有 2 个输入提交,值为 a 和 b, 当我点击a时,有一条到controllerX@function的路线,当我点击b时,它的controllerX@functionB。 我不想更改我的网址。我知道这在简单的 php 中是如何工作的(隐藏输入) 我找不到解释这一点的文档。谁能帮我链接或回答我的问题?
【问题讨论】:
我是 Laravel 的新手,只想拥有一个小程序,它有 2 个输入提交,值为 a 和 b, 当我点击a时,有一条到controllerX@function的路线,当我点击b时,它的controllerX@functionB。 我不想更改我的网址。我知道这在简单的 php 中是如何工作的(隐藏输入) 我找不到解释这一点的文档。谁能帮我链接或回答我的问题?
【问题讨论】:
这不完全是 laravel 问题,但您可以使用 hidden 输入将值为 a 或 b 的参数发送到同一路由,或使用 @987654325 的 action 参数@element 将其发送到不同的路由。
<form method="POST">
<input type="hidden" name="parameter" value="a"/>
...
<button type="submit">Submit</button>
</form>
这将由Controller 函数处理,例如handlePost:
public function handlePost(Request $request){
$hiddenParameter = $request->input("parameter");
if($hiddenParameter == "a"){
// do something;
} else if($hiddenParameter == "b"){
// do something else;
} else {
// tampering prevention;
}
}
如果您使用action 方法完成此操作,您将获得以下形式:
<form method="POST" url="{{ url("/action/a") }}">
...
</form>
以及每个操作的函数,handleA 和 handleB:
public function handleA(Request $request){
// do whatever;
}
public function handleB(Request $request){
// do whatever;
}
最后,您需要路由来对应这些操作:
Route::post("/actions/a", "Controller@handleA");
Route::post("/actions/b", "Controller@handleB");
这是一个相当广泛的答案,但应该能让你走上正确的道路。
【讨论】: