我在Laravel 8中从事一个项目。在一个控制器中,我通过$ request接收了一些数据,并对它们进行了处理。此后,当数据正常时,我想传递给下一个控制器,以进行其他工作。
我正在这样做:
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
);
}
}
}
这是另一个控制器:
class GameController extends Controller
{
public function index(Request $request, $data): View
{
dd($data);
return view('game');
}
}
问题是我收到错误消息:
函数App \ Http \ Controllers \ Game \ GameController :: index()的参数太少,第54行的C:\ xampp \ htdocs \ app \ vendor \ laravel \ framework \ src \ Illuminate \ Routing \ Controller.php中传递了1个参数恰好2个预期
有没有办法将$ data从一个数据提供给另一个控制器?
也许有一种方法可以向一个控制器中的$ request添加一些数据,然后以这种方式将其传递给另一个控制器?
在第一个控制器中,您应该执行以下操作:
return redirect(route('routeToSecondController', [*your data*]));
如果能开机自检会更好。您不应在第二个Controller中添加多个参数。所有数据将保存在$ request-> all()中。
不要按照您的方式验证数据。我建议您在带有规则的请求类中执行此操作(https://laravel.com/docs/8.x/validation#form-request-validation)或使用Assert库进行验证(https://github.com/beberlei/断言)。希望对你有帮助
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句