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
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.
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
.