2009-09-22 73 views
1

我目前在Flex中有一个arrayCollection,我想将它发送到PHP(Zend_AMF)。根据Zend_AMF wiki,直接发送arrayCollection会强制Zend_AMF将arrayCollection作为一个不合适的对象进行投射。我宁愿有一个我的模型阵列。Flex和Zend_AMF:如何从Flex获取Flex arrayCollection到PHP?

我认为最好的方法是将arrayCollection转换为flex中的数组,然后发送它。这是真的,如果是这样的话,我将如何在Flex 3中做到这一点?

如果您有更好的建议,我们将不胜感激。

感谢您的期待!

回答

2

实际上,您可以在PHP端创建一个ArrayCollection类型,并通过AMF直接发送本地ArrayCollection对象。

这里有一些PHP代码我有这个工程。将它保存在一个名为

ArrayCollection.php

<?php 
class ArrayCollection { 
    public function getASClassName() 
    { 
     return 'flex.messaging.io.ArrayCollection'; 
    } 

    var $source = array(); 

    function ArrayCollection() 
    { 
     $this->source = array(); 
    } 
} 

要在PHP端使用这个文件包括ArrayCollection.php在你的PHP项目和语法来调用它看起来是这样的:

$myArrayCollection = new ArrayCollection(); 

,如果你想访问组成中的ArrayCollection数组,你可以做到这一点

$someArray = $myArrayCollection->source; 

在Flex侧,您可以通过Zend AMF将Array Collections直接传递到服务器。在我的其中一个项目中,我有许多具有ArrayCollections的值对象,并且它们在PHP方面工作得很好。所以它可以做到。

如果你绝对不能使用PHP中的ArrayCollection工作,你可以直接访问数组作为Actionscript中ArrayCollection的“source”属性。代码在actionscript中看起来像这样:

import mx.collections.ArrayCollection; 

public var myAC:ArrayCollection = new ArrayCollection(); 

public var myArray:Array = new Array(); 

// populate your ArrayCollection with data... 

myArray = myAC.source; 

myArray现在将是ArrayCollection myAC中对象的数组。

希望这会有所帮助。如果您有进一步的问题和/或有代码示例,请告诉我。

我花了一点时间才弄清楚这一点。