Php 如何将参数从Laravel 8中的antoher控制器传递到控制器中的函数
我在拉维尔8号做一个项目。在一个控制器中,我通过$request接收一些数据,并对它们进行处理。之后,当数据正常时,我想将其传递给下一个控制器,以便对其执行另一项工作 我是这样做的:Php 如何将参数从Laravel 8中的antoher控制器传递到控制器中的函数,php,laravel,controller,Php,Laravel,Controller,我在拉维尔8号做一个项目。在一个控制器中,我通过$request接收一些数据,并对它们进行处理。之后,当数据正常时,我想将其传递给下一个控制器,以便对其执行另一项工作 我是这样做的: class UserController extends Controller { public function validation(Request $request) { $data = $request->all(); if (!is_nume
class UserController extends Controller
{
public function validation(Request $request)
{
$data = $request->all();
if (!is_numeric($data['from']) || !is_numeric($data['to']) || !is_numeric($data['attempts'])) {
return response()->json(['error' => 'Form fields with number in theirs name must be a number']);
} elseif ($data['from'] <= 0 || $data['from'] >= ($data['to'] - 2)) {
return response()->json(['error' => 'Field with the lowest number must be grater than 0 and at least 2 smaller than field with the highest number']);
} elseif ($data['to'] <= 2 || $data['to'] <= ($data['from'] + 2)) {
return response()->json(['error' => 'Field with the highest number must be grater than 2 and at least 2 bigger than field with the lowest number']);
} elseif ($data['attempts'] <= 0) {
return response()->json(['error' => 'Field with number of attempts must be grater than 0']);
} else {
$user = new User;
$user->playerName = $data['name'];
$user->save();
$data['id'] = $user->id;
return redirect()->action(
[GameController::class, 'index'],
$data
);
}
}
}
问题是我收到了错误消息:
函数App\Http\Controllers\Game\GameController::index()的参数太少,在第54行的C:\xampp\htdocs\App\vendor\laravel\framework\src\illights\Routing\Controller.php中传递了1个参数,预期正好是2个参数
有没有办法从一个控制器向另一个控制器提供$数据
也许有一种方法可以在一个控制器中向$request添加一些数据,并通过这种方法将其传递给另一个控制器?在第一个控制器中,您应该执行以下操作:
return redirect(route('routeToSecondController', [*your data*]));
如果它能贴出来会更好。
您不应该在第二个控制器中添加多个参数。所有数据将保存在$request->All()中
不要以您的方式验证数据。我推荐你
使用规则()在请求类中执行此操作
或者使用断言库进行验证()。
我希望我能帮助您您的控制器方法是指定它采用路由参数,
$data
,但此信息不是路由参数OK。那么在这种情况下我可以使用什么方法呢?您必须以与当前在验证方法中相同的方式从请求中获取此数据,并从控制器方法中删除该参数。这是可行的,但有一个问题。将用户保存到数据库后,我将向该数据添加一个参数id。但此参数将不在请求中。我怎样才能把它添加到请求中?这闻起来有点怪。你想做什么?谢谢你的建议。我会试着用另一种方式验证,就像你告诉我的那样。但对于重定向,我有另一个问题,我有一个错误:Array-to-string-conversion.OK。我处理这个错误。谢谢,一切都很好。
return redirect(route('routeToSecondController', [*your data*]));