【发布时间】:2021-04-19 17:06:23
【问题描述】:
我在 Laravel 8 中从事一个项目。在一个控制器中,我通过 $request 接收一些数据,然后对它们做一些事情。之后,当数据正常时,我想将其传递给下一个 Controller 以对其进行另一项工作。
我就是这样做的:
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() 的参数太少,在 C:\xampp\htdocs\app\vendor\laravel\framework\src\Illuminate\Routing\Controller.php 中传递了 1 个在第 54 行,预计正好 2 行
有没有办法将 $data 从一个控制器提供给另一个控制器?
也许有一种方法可以将一些数据添加到一个控制器中的 $request 并以这种方式将其传递给另一个控制器?
【问题讨论】:
-
您的控制器方法指定它采用路由参数
$data,但此信息是输入而不是路由参数 -
好的。那么在这种情况下我可以使用女巫方法吗?
-
您必须从请求中获取此数据,就像您当前在
validation方法中所做的一样,并从您的控制器方法中删除该参数 -
它的工作,但有一个问题。将我的用户保存到数据库后,我向该数据添加了一个参数 id。但是这个参数不会在请求中。如何将其添加到请求中?
-
这对我来说有点奇怪。你想做什么?
标签: php laravel controller