我无法得到fileprg
用于处理集合中的文件的插件。
我正在尝试使用上传多个文件FormCollections
, 但在$form->getData()
没有与我的收藏或文件相关的密钥。
我用简单的方法测试了表单和 fileprgfile input
(以相同的形式)并且它可以上传/重命名并且位于$form->getData()
.
我缺少什么?为了让它发挥作用,需要对集合做一些特别的事情吗?
在文件中\Zend\Mvc\Controller\Plugin\FilePostRedirectGet
你想看的两个函数是getNonEmptyUploadData
(即提供回调函数)和traverseInputs
(这是一个荣耀的foreach
检查每个输入过滤器,然后通过上面的回调运行它和值)。
要允许此插件在集合上工作,您需要扩展该类并更改上述函数:
/**
* Traverse the InputFilter and run a callback against each Input and associated value
*
* @param InputFilterInterface $inputFilter
* @param array $values
* @param callable $callback
* @return array|null
*/
protected function traverseInputs(InputFilterInterface $inputFilter, $values, $callback)
{
$returnValues = null;
foreach ($values as $name => $value) {
if (!$inputFilter->has($name)) {
continue;
}
$input = $inputFilter->get($name);
if ($input instanceof InputFilterInterface && is_array($value)) {
if ($input instanceof CollectionInputFilter) {
$retVal = null;
foreach ($value as $k => $val) {
$retVal2 = $this->traverseInputs($input->getInputFilter(), $val, $callback);
if ($retVal2)
$retVal[$k] = $retVal2;
}
} else
$retVal = $this->traverseInputs($input, $value, $callback);
if (null !== $retVal) {
$returnValues[$name] = $retVal;
}
continue;
}
$retVal = $callback($input, $value);
if (null !== $retVal) {
$returnValues[$name] = $retVal;
}
}
return $returnValues;
}
/**
* Traverse the InputFilter and only return the data of FileInputs that have an upload
*
* @param InputFilterInterface $inputFilter
* @param array $data
* @return array
*/
protected function getNonEmptyUploadData(InputFilterInterface $inputFilter, $data)
{
return $this->traverseInputs(
$inputFilter,
$data,
function ($input, $value) {
$messages = $input->getMessages();
if (is_array($value) && $input instanceof FileInput && empty($messages)) {
$rawValue = $value;
if (
(isset($rawValue['error']) && $rawValue['error'] !== UPLOAD_ERR_NO_FILE)
|| (isset($rawValue[0]['error']) && $rawValue[0]['error'] !== UPLOAD_ERR_NO_FILE)
) {
return $value;
}
}
return;
}
);
}
这是一个差异,显示了哪些行被更改:https://github.com/rafam31/zf2/commit/c481e7404faf93beb4c67a6a4b7490fec15d279b https://github.com/rafam31/zf2/commit/c481e7404faf93beb4c67a6a4b7490fec15d279b
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)