对 $request 替换值时,对上传控件传过来的字段名不起作用[已解决]

// 设置某参数,如果存在则替换,否则新增

$request['foo'] = 'bar';

这个写法应该没问题,现在碰到

###页面

对 $request 替换值时,对上传控件传过来的字段名不起作用

###提交后的处理

对 $request 替换值时,对上传控件传过来的字段名不起作用

图片上传控件名为 thumb,替换不了

对 $request 替换值时,对上传控件传过来的字段名不起作用

求解,谢谢

一个奋斗者
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
Complicated
最佳答案

你构建一个数组不就完了,$info = $request->input(),这是获取的正常参数 $file = $request->file(‘file’),这是获取的附件,$thumb = $fiel->getpath()得到路径,,然后把路径 追加到数组里,$info['thumb' ] = $thumb,然后 update($info)就好了

4年前 评论
讨论数量: 5
unset($request['thumb']);

也无效

因为我是修改数据,想直接update($request->all()); 进行修改,就没有构建一个数组了

4年前 评论

为,,,为啥要这样做,,,

4年前 评论

表单有新增字段可以不用修改控制器代码,后台代码我都这么干

4年前 评论
Complicated

你构建一个数组不就完了,$info = $request->input(),这是获取的正常参数 $file = $request->file(‘file’),这是获取的附件,$thumb = $fiel->getpath()得到路径,,然后把路径 追加到数组里,$info['thumb' ] = $thumb,然后 update($info)就好了

4年前 评论

实际上你这样是无法替换到的,因为你在操作不同的数组。$request->all()是重新从request类中获取。

    /**
     * Get all of the input and files for the request.
     *
     * @param  array|mixed  $keys
     * @return array
     */
    public function all($keys = null)
    {
        $input = array_replace_recursive($this->input(), $this->allFiles());

        if (! $keys) {
            return $input;
        }

        $results = [];

        foreach (is_array($keys) ? $keys : func_get_args() as $key) {
            Arr::set($results, $key, Arr::get($input, $key));
        }

        return $results;
    }

所以想要改的话,就按照上面的回答做就可以了

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!