如何修改laravel中的Request值?

Jag*_* NH 16 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

但,

在每个请求输出

echo $request['image'];
Run Code Online (Sandbox Code Playgroud)

输出一些文本,如/ tmp/phpDPTsIn

Pap*_*apa 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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


Mar*_*nte 8

您正在使用设置新文件名

$request->image = ...
Run Code Online (Sandbox Code Playgroud)

但是你正在使用类的数组可访问接口来检索它Request.

尝试使用设置文件名

$request['file'] = ...
Run Code Online (Sandbox Code Playgroud)

或使用该类的merge()方法Request.

  • 你真的需要改变`$ request`变量吗?为什么不将输入值输入另一个变量然后更改? (2认同)
  • 一个人可能想要更改 `$request` 对象中的值的一个原因是,如果他们正在创建一个新资源,他们将需要单独保存每个属性(通过将数组传递给 create 方法)只是为了他们可以将他们想要影响的属性设置为修改后的值。这会影响代码的可遗传性。 (2认同)