php-Laravel request()输入文件并以相同的名称隐藏输入
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-Laravel request()输入文件并以相同的名称隐藏输入,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1557字,纯文字阅读大概需要3分钟。
内容图文
我已经简化了这个问题的表格.
这是我的例子
<form method="post" name="test" enctype="multipart/form-data">
{{csrf_field()}}
<input class="form-control" type="file" name="test[]" id="companion"/>
<input type="hidden" name="test[]" value="random-value" />
<input type="submit" value="Submit">
</form>
在我的路线上,仅dd请求如下:
dd(request('test'));
现在,我期望一个带有文件(UploadedFile类型)和随机值的数组,相反,我只得到文件.
array:1 [▼
0 => UploadedFile {#539 ?}
]
知道为什么我会得到这个结果吗?
我知道我可以更改变量的名称,但是我想了解为什么它不能那样工作.
提前致谢.
解决方法:
这是因为:
>您调用请求(“测试”).这在Illuminate\Foundation\helpers.php中呼叫了助手
function request($key = null, $default = null)
{
...
$value = app('request')->__get($key);
...
}
>这会将调用定向到__get方法以快速获取Illuminate\Http\Request.php中的值
public function __get($key)
{
if (array_key_exists($key, $this->all())) {
return data_get($this->all(), $key);
}
...
}
>问题在于特征Illuminate\Http\Concerns\InteractsWithInput中定义的all()方法
public function all($keys = null)
{
$input = array_replace_recursive($this->input(), $this->allFiles());
if (! $keys) {
return $input;
}
...
}
所以你知道这里发生了什么吗?实际上,您仍然具有test []隐藏值,但是all()方法只是将其与具有相同名称的文件合并.我想这是出于简化原因,为什么我会这样做,而且我认为具有相同名称,不同输入类型的两个输入并不常见.
我想,这里最简单的解决方案是通过请求实例访问它.试试这个(未经测试,理论上应该可以工作):
\Log::info(app('request')->file('test'));
\Log::info(app('request')->get('test'));
并在laravel.log文件中找到输出.您应该能够与它们进行简单的数组合并.
内容总结
以上是互联网集市为您收集整理的php-Laravel request()输入文件并以相同的名称隐藏输入全部内容,希望文章能够帮你解决php-Laravel request()输入文件并以相同的名称隐藏输入所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。