php - 如何使用 Laravel 将表单数据从一个视图提交到另一个视图
问题描述
我是 Laravel 的新手,我想弄清楚如何将数据从一个视图提交到另一个视图。我试图在这里阅读一些其他类似的问题并观看一些关于此的视频,但我仍然无法得到它。基本上我有 3 个提交按钮,并且传递的数据来自表单。我在控制器中设置了一条新路由和一个函数,但出现错误:Declaration of App\Http\Controllers\PagesController::CallAction() should be compatible with Illuminate\Routing\Controller::callAction($method, $parameters)
. 但是我认为我遵循正确的格式。
这是我的 web.php:
Route::group(['middleware' => ['auth']], function() {
// CallCenter page
public function CallCenter() {
return view('Pages.CallCenter');
}
Route::post(
'/CallAction/', 'PagesController@CallAction'
);
});
Auth::routes();
我的页面控制器:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PagesController extends Controller
{
// CallCenter page
public function CallCenter() {
return view('Pages.CallCenter');
}
// CallAction page
public function CallAction() {
return view('Pages.CallAction');
}
}
来自:
<form action="/CallAction" method="post">
@csrf
<table style="width:70%">
<tr>
<td width="33%">Date<BR>
<?php
date_default_timezone_set('America/Chicago');
echo date('m/d/y');
?>
</td>
<td width="33%">Time<BR>
<?php
date_default_timezone_set('America/Chicago');
echo date('h:i');
?>
</td>
<td width="33%">Campus<BR>
<select name="campus">
<option disabled selected value>-- Campus --</option>
<option value="XXX1"></option>
<option value="XXX2"></option>
<option value="XXX3"></option>
<option value="XXX4"></option>
<option value="XXX5"></option>
</select>
</td>
</tr>
<tr>
<td width="33%">Extension<BR>
<input name="extension" type="text" size="15">
</td>
<td width="33%">Name<BR>
<input name="customerName" type="text" size="40">
</td>
<td width="33%">Email<BR>
<input name="customerEmail" type="text" size="50">
</td>
</tr>
<tr>
<td colspan="3">Description<BR>
<textarea name="description" rows="2" cols="125"></textarea>
</td>
</tr>
<tr>
<td width="33%"><input type="submit" name="convert" value="Convert to Ticket"></td>
<td width="33%"><input type="submit" name="close" value="Close Issue"></td>
<td width="33%"><input type="submit" name="hold" value="Put Issue on Hold"></td>
</table>
</form>
解决方案
问题:
问题是您的 Controller 正在扩展App\Http\Controllers\Controller
,而后者又扩展了 abstract class Illuminate\Routing\Controller as BaseController
。这BaseController
已经有一个称为callAction()
定义的方法,如下所示:
public function callAction($method, $parameters)
{
return call_user_func_array([$this, $method], $parameters);
}
所以如果你想callAction()
在你的控制器中调用一个方法,你需要提供相同的接口并接受一个$method
和一个$parameters
数组。
解决方案:
快速的解决方案是将您的控制器方法重命名CallAction()
为与父类上的方法名称不冲突的名称......CallMyAction()
然后更新您的路由文件以匹配新名称。
所以你做的一切都是正确的,你只是选择了一个已经在框架中其他地方定义的方法名称。
推荐阅读
- javascript - React中花括号内的花括号
- javascript - JS 动画表单
- labview - 使用“经过时间”组件的重置后如何获取经过时间?
- python - 将按钮链接到 Flask-Appbuilder 中的页面
- apache-spark - 什么是数据块火花增量表?他们是否还存储特定会话的数据以及如何查看这些增量表及其结构
- microservices - 在微服务架构中如何以及在何处执行响应组合?
- video - “应该”始终在任务线程中创建 roku 视频节点吗?
- python - 是否有与 R 中的 dlmFilter 相同的 python 模块
- android - 跨平台随机重现性
- javascript - 正则表达式中的前向引用