我是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();
我的PagesController:
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>
答案 0 :(得分:1)
问题:
问题是您的控制器正在扩展App\Http\Controllers\Controller
,而后者又扩展了抽象类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()
然后更新您的路由文件以匹配新的名称。
因此,您做对了所有事情,只是选择了框架中其他位置已经定义的方法名称。