如何修改laravel中的请求值?
How to modify Request values in 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
您正在使用
设置新文件名
$request->image = ...
但是您正在使用 Request
class.
的数组可访问接口检索它
尝试使用
设置文件名
$request['file'] = ...
或者使用Request
class的merge()
方法。
您可以在 $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;
}
}
尽管有方法名称,它实际上替换了与参数键指定的成员名称关联的任何值,而不是连接它们的值或类似的东西。
我有以下代码,
我的问题是如何修改请求值?
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
您正在使用
设置新文件名$request->image = ...
但是您正在使用 Request
class.
尝试使用
设置文件名$request['file'] = ...
或者使用Request
class的merge()
方法。
您可以在 $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;
}
}
尽管有方法名称,它实际上替换了与参数键指定的成员名称关联的任何值,而不是连接它们的值或类似的东西。