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模式的正确用法。我有用户控制器的验证和另一种存储方法,如果我在模型中使用,我会在testcontrolleruser::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);