このようにユーザーコントローラーにストアメソッドがあります
public function store(Request $request)
{
User::create($request->all());
}
そして別のコントローラーでこの方法を使いたい
public function test(Request $request)
{
.....
app('\App\Http\Controllers\UserController')->store($test_array);
...
}
および$test_array
は:
{"name":"test","email":"[email protected]"}
そして最後に私にこれのエラーを見せて
App\Http\Controllers\UserController :: store()に渡される引数1は、Illuminate\Http\Requestのインスタンスでなければなりません。
配列をRequestオブジェクトに変換するにはどうすればよいですか?
使うだけ
$request = new Illuminate\Http\Request($test_array);
$request->merge($someArray)
を使用します
この方法を試すことができます。
2番目のコントローラーのテスト方法。
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_array
タイプarray
である必要があります
これで問題が解決することを願っています。
このようにstore()
を使用することはできないと思います。
他の場所からstore()
アクションを呼び出す場合は、永続化ロジックをモデルに配置できます。
_class User extends Model
public function storeData($data)
{
$createdUser = User::create($data);
return $createdUser;
}
_
そして、これをstore()
actionおよびtest()
から呼び出します。
単にではない場合は、store()
を次のように変更します。
_public function store($data)
{
User::create($data);
}
_
配列をRequestオブジェクトに変換するにはどうすればよいですか?
あなたが本当にこの方法でそれをしたいのであれば、私はしません、ここにあなたはいます:
このような何かがうまくいくはずです-私はそれをテストしませんでした:
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);