如何使用 Laravel 将表单数据从一个视图提交到另一个视图



我是Laravel的新手,我正在尝试弄清楚如何将数据从一个视图提交到另一个视图。我试图在这里阅读其他一些类似的问题并观看一些关于这个问题的视频,但我仍然无法理解。基本上我有 3 个提交按钮,传递的数据来自表单。我在控制器中设置了新路由和函数,但收到错误:Declaration of AppHttpControllersPagesController::CallAction() should be compatible with IlluminateRoutingController::callAction($method, $parameters).但是我认为我遵循正确的格式。

这是我的网站.php:

Route::group(['middleware' => ['auth']], function() {
// CallCenter page
public function CallCenter() {
return view('Pages.CallCenter');
}
Route::post(
'/CallAction/', 'PagesController@CallAction'
);
});
Auth::routes();

我的页面控制器:

namespace AppHttpControllers;
use IlluminateHttpRequest;
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>

问题:

问题是您的控制器正在扩展AppHttpControllersController进而扩展抽象类IlluminateRoutingController as BaseController。这个BaseController已经有一个名为callAction()的方法,定义如下:

public function callAction($method, $parameters)
{
return call_user_func_array([$this, $method], $parameters);
}

因此,如果你想在你的控制器中有一个叫做callAction()的方法,你需要提供相同的接口并接受一个$method和一个$parameters数组。

溶液:

快速的解决方案是将控制器方法重命名CallAction()与父类上的方法名称不冲突的内容......也许CallMyAction()然后更新路由文件以匹配新名称。

所以你做的一切都是正确的,你只是选择一个已经在框架中其他地方定义的方法名称。

最新更新