Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将参数从Laravel 8中的antoher控制器传递到控制器中的函数_Php_Laravel_Controller - Fatal编程技术网

Php 如何将参数从Laravel 8中的antoher控制器传递到控制器中的函数

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

我在拉维尔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
            );
        }
    }
}
问题是我收到了错误消息:

函数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*]));