web-dev-qa-db-ja.com

laravelでリクエスト値を変更する方法は?

私は次のコードを持っています、

私の質問は、リクエスト値を変更する方法ですか?

public function store(CategoryRequest $request)
{
    try {
        $request['slug'] = str_slug($request['name'], '_');
        if ($request->file('image')->isValid()) {
            $file = $request->file('image');
            $destinationPath = public_path('images/category_images');
            $fileName = str_random('16') . '.' . $file->getClientOriginalExtension();
            $request->image = $fileName;
            echo $request['image'];
            $file->move($destinationPath, $fileName);
            Category::create($request->all());
            return redirect('category');
        }
    } catch (FileException $exception) {
        throw $exception;
    }
}

だが、

各リクエストでの出力

echo $request['image'];

/ tmp/phpDPTsInのようなテキストを出力します

16
Jagadesha NH

_$request_オブジェクトでmerge()メソッドを使用できます。参照: https://laravel.com/api/5.2/Illuminate/Http/Request.html#method_merge

コードでは、次のようになります。

_public function store(CategoryRequest $request)
{
    try {
        $request['slug'] = str_slug($request['name'], '_');
        if ($request->file('image')->isValid()) {
            $file = $request->file('image');
            $destinationPath = public_path('images/category_images');
            $fileName = str_random('16') . '.' . $file->getClientOriginalExtension();
            $request->merge([ 'image' => $fileName ]);
            echo $request['image'];
            $file->move($destinationPath, $fileName);
            Category::create($request->all());
            return redirect('category');
        }
    } catch (FileException $exception) {
        throw $exception;
    }
}
_

メソッド名にもかかわらず、値やそのようなものを連結するのではなく、パラメーターのキーで指定されたメンバー名に関連付けられた値を実際に置き換えます。

27
PapaHotelPapa

を使用して新しいファイル名を設定しています

_$request->image = ...
_

ただし、Requestクラスの配列アクセス可能なインターフェイスを使用して取得しています。

を使用してファイル名を設定してみてください

_$request['file'] = ...
_

または、Requestクラスのmerge()メソッドを使用します。

8
Marco Pallante