Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.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 5中的请求对象_Php_Laravel_Laravel 5_Laravel 5.1 - Fatal编程技术网

Php 将数组转换为laravel 5中的请求对象

Php 将数组转换为laravel 5中的请求对象,php,laravel,laravel-5,laravel-5.1,Php,Laravel,Laravel 5,Laravel 5.1,我在用户控制器中有如下存储方法 public function store(Request $request) { User::create($request->all()); } 在另一个控制器中,我想使用这种方法 public function test(Request $request) { ..... app('\App\Http\Controllers\UserController')->store($test_array); ... } 而

我在用户控制器中有如下存储方法

public function store(Request $request)
{
    User::create($request->all()); 

}
在另一个控制器中,我想使用这种方法

 public function test(Request $request)
{
  .....
   app('\App\Http\Controllers\UserController')->store($test_array);
  ...
}
$test_数组
是:

{"name":"test","email":"test@gmail.com"}
最后告诉我这个错误

传递给App\Http\Controllers\UserController::store()的参数1必须是\Http\Request的实例


如何将数组转换为请求对象?

我认为您不能以这种方式使用
store()

如果从其他位置调用
store()
action,则可以将持久化逻辑放入模型中:

class User extends Model

    public function storeData($data)
    {
        $createdUser = User::create($data);
        return $createdUser;
    }
然后从
store()
操作和
test()
调用此函数

如果不只是,只需将
store()
更改为:

public function store($data)
{
    User::create($data); 
}

为什么不使用刷新的会话数据进行重定向?正如文件所说:

将重定向到新URL并将数据闪烁到会话 通常在同一时间完成。因此,为了方便起见,您可以创建 将响应实例和闪存数据重定向到单个会话中 方法链。这对于存储状态特别方便 操作后的消息:

当然,在用户被重定向到新页面后,您可以 从会话中检索并显示闪烁的消息。对于 例如,使用刀片语法:

@if(会话('status'))
{{session('status')}
@恩迪夫
因此,在您的例子中,您将使用('user',$userModel')存储
returnredirect('dashboard')->

使用
$request->merge($someArray)

你可以这样试试

第二个控制器的测试方法

public function test(Request $request)
{
  $another_array = [];
  $another_array['eg'] = $test_array;
  $request->merge($another_array);

  .....
   app('\App\Http\Controllers\UserController')->store($request->get('eg'));
  ...
}
您的
$test_数组
必须是
数组

希望这能解决您的问题。

只需使用

$request = new Illuminate\Http\Request($test_array);
如何将数组转换为请求对象

如果你真的想这样做,我不会的,给你:

像这样的东西应该能奏效——我没有测试它:

use Symfony\Component\HttpFoundation\Request as SymfonyRequest;
use Symfony\Component\HttpFoundation\ParameterBag;
use Illuminate\Http\Request as IlluminateRequest;


$symfonyRequest = SymfonyRequest::createFromGlobals();

$symfonyRequest->query = new ParameterBag([
    'foo' => 'bar',
]);

$request = IlluminateRequest::createFromBase($symfonyRequest);

如何在
app('\app\Http\Controllers\UserController')->store($request)之前获取
$request
数组
?为什么$request首先是
test
的参数?您最好使用
设置
或数据提供程序谢谢@Alexey,但我不能在模型中添加方法,因为在此之前我在controllerI中添加了任何方法,我想您不明白我的意思。您可以将DB相关逻辑放入模型类中。然后,您将能够从任何控制器和您想要的任何操作(从
test()
store()
)调用它。这是MVC模式的正确用法。我有用户控制器的验证和另一种存储方法,如果我在模型中使用,我会在testcontroller
user::create($request)中编写它这就是为什么Laravel允许您创建用于验证的自定义请求类:您不理解我的问题,我想在其他地方使用控制器方法来RESTAPI
$request = new Illuminate\Http\Request($test_array);
use Symfony\Component\HttpFoundation\Request as SymfonyRequest;
use Symfony\Component\HttpFoundation\ParameterBag;
use Illuminate\Http\Request as IlluminateRequest;


$symfonyRequest = SymfonyRequest::createFromGlobals();

$symfonyRequest->query = new ParameterBag([
    'foo' => 'bar',
]);

$request = IlluminateRequest::createFromBase($symfonyRequest);