laravel |如何替换表单请求中的字段?

时间:2017-04-07 12:37:36

标签: php laravel replace laravel-5.4

我正在使用laravel 5.4而我正在尝试替换我的请求中的imagePath字段(重命名上传的图像)。

解释

提交表单时,请求字段(fork)包含上传图像的临时位置,我在更改名称(request->imagePath)时将该tmp图像移动到目录。现在因为$name仍有旧的tmp图像位置,我想更改request->imagePath值以获得新位置,然后创建用户。

喜欢这样

request->imagePath

但它不起作用,这是输出

     if($request->hasFile('imagePath')) 
     {
            $file = Input::file('imagePath');

            $name = $request->name. '-'.$request->mobile_no.'.'.$file->getClientOriginalExtension();

             echo $name."<br>";

            //tried this didn't work
            //$request->imagePath = $name;

            $file->move(public_path().'/images/collectors', $name);

            $request->merge(array('imagePath' => $name));

            echo $request->imagePath."<br>";
     }

请帮助

1 个答案:

答案 0 :(得分:2)

我相信merge()是正确的方法,它会将提供的数组与ParameterBag中的现有数组合并。

但是,您正在错误地访问输入变量。请尝试使用$request->input('PARAMETER_NAME')代替...

因此,您的代码应如下所示:

if ($request->hasFile('imagePath')) {
    $file = Input::file('imagePath');
    $name = "{$request->input('name')}-{$request->input('mobile_no')}.{$file->getClientOriginalExtension()}";

    $file->move(public_path('/images/collectors'), $name);
    $request->merge(['imagePath' => $name]);

    echo $request->input('imagePath')."<br>";
}

注意:您也可以将路径传递到public_path(),然后它会为您连接。

<强>参考
检索输入:
https://laravel.com/docs/5.4/requests#retrieving-input
$request->merge()https://github.com/laravel/framework/blob/5.4/src/Illuminate/Http/Request.php#L269
public_pathhttps://github.com/laravel/framework/blob/5.4/src/Illuminate/Foundation/helpers.php#L635