web-dev-qa-db-ja.com

laravel 5で配列をリクエストオブジェクトに変換

このようにユーザーコントローラーにストアメソッドがあります

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オブジェクトに変換するにはどうすればよいですか?

10
paranoid

使うだけ

$request = new Illuminate\Http\Request($test_array);
14
KShport

$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である必要があります

これで問題が解決することを願っています。

7
Parvez Rahaman

このように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); 
}
_
1
Alexey Mezenin

配列を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);
0
jakub_jo