web-dev-qa-db-fra.com

Comment modifier les valeurs de Request dans laravel?

J'ai le code suivant,

ma question est de savoir comment modifier les valeurs de la demande?

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;
    }
}

Mais,

à chaque demande, la sortie de

echo $request['image'];

affiche du texte comme/tmp/phpDPTsIn

16
Jagadesha NH

Vous pouvez utiliser la méthode merge() sur le $request objet. Voir: https://laravel.com/api/5.2/Illuminate/Http/Request.html#method_merge

Dans votre code, cela ressemblerait à:

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;
    }
}

Malgré le nom des méthodes, il remplace en fait toutes les valeurs associées aux noms de membres spécifiés par les clés du paramètre plutôt que de concaténer leurs valeurs ou quelque chose du genre.

27
PapaHotelPapa

Vous définissez le nouveau nom de fichier à l'aide de

$request->image = ...

mais vous le récupérez à l'aide de l'interface accessible aux tableaux de la classe Request.

Essayez de définir le nom du fichier à l'aide de

$request['file'] = ...

ou utilisez la méthode merge() de la classe Request.

8
Marco Pallante