我遇到的问题比我想象的要难得多。并没有找到一个让我到达我需要的地方的答案。 目标是将事物添加到会话变量中的列表中,该变量与购物车类似。基本上有人会在列表中添加1个项目,然后添加其他项目,每个项目都会添加到数组中。但在使用各种方法后,我仍然没有得到我需要的东西。
这是用户故事
以下代码似乎是正确的解决方案。但是它只返回最新的项ID,并且不会创建数组。我有其他创建数组的解决方案,但是它们为每个附加项创建嵌套数组,所以不是我需要的。任何帮助,将不胜感激。
jQuery( function() {
var articleID = jQuery('#articleID').val();
Dropzone.autoDiscover = false;
var myDropzone = new Dropzone('#media-uploader', {
url: "url?action=kl_upload_article_images",
acceptedFiles: 'image/*',
maxFilesize : 50,
previewTemplate: $('#preview-template').html(),
thumbnailHeight: 120,
thumbnailWidth: 120,
parallelUploads: 100,
uploadMultiple: true,
autoProcessQueue: false,
addRemoveLinks : true,
autoProcessQueue : false,
//removedfile is called whenever file is removed from the list
removedfile : function(file)
{
var imageName = file.name;
var confirmation = confirm('Are you sure you want to delete this image?');
if(confirmation == true)
{
//post request to remove file from server
$.post("url?action=kl_delete_article_images&image_name=" + imageName +"&article_id="+ articleID);
//deleting thumbnails
var _ref;
return (_ref = file.previewElement) != null ? _ref.parentNode.removeChild(file.previewElement) : void 0;
}
},
init: function()
{
dropZoneObject = this;
//getting file name and directory to preview stored images in dropzonejs
$.get("url?action=kl_edit_article_images&article_id=" + articleID,function(data)
{
//looping through each data to preview images
$.each(data,function(key,value)
{
var mockFile = {name:value.name,size:value.size};
dropZoneObject.emit("addedfile", mockFile);
var fileUrl = 'fileDirectory/';?>'+value.name;
dropZoneObject.emit("thumbnail", mockFile, fileUrl);
dropZoneObject.emit("complete", mockFile);
});
//end of loop
dropZoneObject.on('sending', function(file, xhr, formData)
{
formData.append('articleId', articleID);
});
});
}
});
$ itemAdded = $ _REQUEST [' pPageItemID']; $ currentItems = $ _SESSION [' ITEM_IDS'];
//如果已设置会话,请将其更改为数组以添加多个ID if(isset($ _ SESSION [' ITEM_IDS'])){
//Request Item From Post
}
//如果Session不是create session var并添加产品ID,请检查Session是否已设置 if(is_null($ _ SESSION [' ITEM_IDS'])){
//Check to see if this is acutally a form post and then set session
if (isset($_REQUEST['pPageItemID'])){
$newItems = array_merge($currentItems, $itemAdded);
//Set new session with old and new IDs
$_SESSION['ITEM_IDS'] = $newItems;
}
}
答案 0 :(得分:0)
我想出来了。我的问题是假设PHP将单个变量理解为具有单个变量的数组。我错了!
一个简单的修复 - 我只需要在合并期间将其定义为数组。更新了下面的代码,它工作得非常好。
$newItems = array_merge((array)$currentItems, (array)$itemAdded);