如何修改laravel中的Request值?

时间:2015-07-18 10:30:05

标签: laravel-5 laravel-request

我有以下代码,

我的问题是如何修改Request值?

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

2 个答案:

答案 0 :(得分:27)

您可以在merge()对象上使用$request方法。请参阅: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;
    }
}

尽管有方法名称,它实际上会替换与参数键所指定的成员名称相关联的任何值,而不是连接它们的值或类似的值。

答案 1 :(得分:8)

您正在使用

设置新文件名
$request->image = ...

但是您正在使用Request类的数组可访问接口进行检索。

尝试使用

设置文件名
$request['file'] = ...

或使用merge()类的Request方法。